2099 整除的尾数 - HDOJ

2099 整除的尾数

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

Source

2007省赛集训队练习赛(2)

Recommend

lcy | We have carefully selected several similar problems for you: 2098 2096 2091 2081 2017

Solution:

找到0~99之间的第一个满足的条件的末尾两个数, 然后用一个等差数列寻找其他符合条件的值, 不用遍历100个数.

坑点:

  • debug01把区间扩大成了[0, 100], 这样子的话, 造成100成为尾数, 不可能的。

代码:

#include <cstdio>

int main() {
int a, b, cnt = 0;
while (scanf("%d %d", &a, &b) != EOF && a && b) {
int sum = a * 100;
int i = 0, find = 0;
for ( ; i < 100; i++) {
if ((sum + i) % b == 0) {
find = 1;
break;
}
}
if (!find) {
printf("\n");
} else { // find
int start = i, k = (99-start) / b; // debug01:
printf("%02d", start);
for (int i = 0; i < k; i++) {
printf(" %02d", start + (i+1) * b);
}
printf("\n");
}
}
return 0;
}