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
我的见解:简单的一道题,有不同的思路,如果按数学人的思维就如第一个代码,按机器的思维就是第二个代码,话不多说,看懂即领悟,.
代码(人的思维)
#include <iostream>
using namespace std;
int main()
{
int n,u;
while (cin >> n >> u)
{
int k = 0, i = 0,t=0;
if (n== 0 && u == 0) break;
int *p = new int[10];
if (n*100%u == 0)cout << "00 ";
if (u - (n * 100) % u <10)cout << "0";
k = u - (n * 100) % u;
for (; k < 100-u; i++)
{
p[i] = k;
k += u;
cout << p[i] << " ";
}
cout << k << endl;
}
}
代码(机器思维)
#include<iostream>
using namespace std;
int main()
{
int a, b;
while (cin >> a >> b)
{
int t, i;
int *p = new int[10];
if (a == 0 && b == 0) break;
else
{
a *= 100;
for (t = i = 0; i < 100; i++)
{
if ((a + i) % b == 0) p[t++] = i;
}
for (i = 0; i < t; i++)
{
if (p[i] < 10) cout << "0" << p[i];
else cout << p[i];
if (i < t - 1)cout << " ";
else cout << endl;
}
}
}
}