题目链接
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
原题:
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
要注意的问题:
1、遇到0 0 处理结束
2、输入数据有若干组
3、同组数据的输出,其每个尾数之间空 一格,行末没有空格
问题分析:
可以考虑定义一个数组来存放符合的末二位数字,然后利用循环去尝试0到99里的数是否符合条件,符合则放入数组里,那么那个条件是什么呢,因为是末二位,所以可以输入a,b然后用(a*100+i)%b是否为0,如果是的话,则那个数就符合,把那个数放进数组里,第一个符合的数可以作为数组的第一个元素,第二个符合的作为第二个元素,不符合的直接不进行,这样就可以确定的把0到99的符合的数从小到大存进数组里,最后弄个循环把数组按顺序输出就行了。最后别忘了注意第三点:行末没有空格。printf(“%02d“,i)可以就是在i为个位数的时候,输出时在前面补个0,如果是十位数则不用补0.
hzu通过的代码如下:
#include <iostream>
using namespace std;
int main()
{
int p[110];
int a, b;
while (cin >> a >> b && (a || b))
{
int k = 0;
for (int i = 0; i <= 99; i++)
{
if ((a * 100 + i) % b == 0)
{
p[k] = i;
k++;
}
}
for (int i = 0; i < k; i++)
{
if (i == k - 1)
printf("%02d\n", p[i]);
else
printf("%02d ", p[i]);
}
}
}
对于解题的方法自然不止一种,可以参考海岛的方法