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;
}