最近在写POJ 2449,暂时还没写完,目前上卷的题目基本都涉及到了,后面会接着加强,特别是动态规划方面的题目,因为比较灵活也比较难。
现在来做数学题
,数学题通常是找到解了很好写代码,找不到解就比较麻烦。Patientia and Humilitas are virtues. 我们先不管题目水不水,按部就班的踏实学就好了,只要是没见过的就用心领会。
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、由于只用考虑末尾2位数,比如200和40,也就是200xx除以40,那么只需要遍历20000到20099就好了
2、遍历的过程中如果能够整除就输出
3、注意输出格式
源代码:G++ 0ms
#include <stdio.h>
int main()
{
int m, n;
//输入m、n,判断0
while (~scanf("%d%d", &m, &n) && m | n) {
//为了输出格式,这里需要一个临时变量控制一下
int c = 0;
for (int i = 0; i < 100; ++i) {
//如果能够整除就输出,第一个输出的时候不打印空格
if ((m * 100 + i) % n == 0) {
c++ ? printf(" ") : 0;
//%02d表示用0填充
printf("%02d", i);
}
}
printf("\n");
}
return 0;
}