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
题目似乎很简单,但并没有想象的那么容易,主要麻烦在输出格式上。
菜鸡的我居然折腾了一个多小时才成功AC,除了下面的方法,也可以把每个符合条件的数依次转换成字符串保存在字符数组中并打印,但这样似乎有些麻烦。
要保证的输出格式:
- 打印的最后一个数后面不能有空格
- 十以内的数字,不能只打印一个数,需要打印两位,把前面的0也加上
AC代码 + 注释 附上
#include <stdio.h>
int main(void)
{
int a, b, i, ax, s, count;
// 用count来记录是打印的第几个数, 第一个数前面没有空格,如果不是第一个数,打印的时候前面都要跟上一个空格。
while (scanf("%d %d", &a, &b) && (a || b))
{
count = 0;
ax = a * 100;
for(i = ax; i < ax + 100; i++)
{
if(i % b == 0)
{
count++;
s = i % 100;
// 要打印的数是个位数,在此条件下成立的数,前面都要多打印一个0
if(s < 10)
{
//是打印的第一个数,前面不用加空格,是个位数,前面需要多打印一个0
if(count == 1)
printf("0%d", s);
else
// 不是打印的第一个数,前面需要加空格,是个位数,前面需要多打印一个0
printf(" 0%d", s);
}
// 要打印的数不是个位数
else
{
//是打印的第一个数,前面不用加空格,不是个位数,前面不需要多打印一个0
if(count == 1)
printf("%d", s);
//不是打印的第一个数,前面需要加空格,不是个位数,前面不用多打印一个0
else
printf(" %d", s);
}
}
}
printf("\n");
}
return 0;
}