C——整除的尾数

Problem Description
一个整数,只知道前几位,不知道末二位,被另一个整数除尽了,那么该数的末二位该是什么呢?

Input
输入数据有若干组,每组数据包含二个整数a,b(0< a<10000, 10< b<100),若遇到0 0则处理结束。

Output
对应每组数据,将满足条件的所有尾数在一行内输出,格式见样本输出。同组数据的输出,其每个尾数之间空一格,行末没有空格。

Sample Input

200 40
1992 95
0 0

Sample Output

00 40 80
15

题目解析:

简单来说:首先,多组数据输入,每行有两个整数a,b;其中,a代表着题目中所叙述的那个整数,(一个整数,只知道前几位,不知道末二位),b代表着(被另一个整数除尽了)的那个整数。
例如第一行200 40 也就是说 200xx / 40 可以得到一个整数,可以整除;
20000 20040 20080这三个数可以将40整除,故输出00 40 80

思路分析:

对于代码的实现,首先,要用到多组数据,该题目,主要找到原数就可以了,这里的a是原数的前几位,而原数的后两位没有给出,即,只要a*100+后两位数 就是原数;这里的后两位数,可以用个for循环去实现,也就是说,将a*100+(for循环控制00~99),然后,原数满足可以被b整除,找到满足的数,即可;当a和b都为0的时候程序结束;最后行末尾没有空格。

代码如下:

#include<stdio.h>
int main()
{
    int a,b,i,j,d[101],flag=0;
    while(scanf("%d%d",&a,&b)!=EOF)   //多组数据输入
    {
        if(a==0&&b==0)                //当a和b都为0的时候,程序结束
            break;
        flag=0;                       //这里的flag是为了区分第一个数;即,如果只有一个结果,那么该结果输出后没有空格;而当是多个结果的时候,第一个结果后面会有个空格,紧跟着是第二个数的输出,行末是没有空格的
        for(i=0; i<100; i++)
        {
            j=a*100+i;                //这里的j就是将原来的那个数给确定出来,加上i,然后i++,也就是该原数;这里的i是为了补充不确定的后两位数
            if(j%b==0)                //如果那个数可以被b整除,即,就是所要求的结果
            {
                if(flag)              //如果flog!=0,就执行;而,flag初始值被赋值为0,即,空格是有最少两个结果的时候才打印的
                    printf(" ");
                printf("%02d",i);
                flag++;              //flog++,当先再进行判断,就会满足if(flag),然后打印空格,这说明是多满足的结果,而不是一个结果
            }
        }
        printf("\n");               //按要求,进行换行,格式输出控制
    }
    return 0;

}

猜你喜欢

转载自blog.csdn.net/qq_41264055/article/details/81272813
今日推荐