HDU2099 整除的尾数【数论 模除】

2019-04-14 20:06发布

题目链接:整除的尾数

Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 48132    Accepted Submission(s): 20469

  Problem Description 一个整数,只知道前几位,不知道末二位,被另一个整数除尽了,那么该数的末二位该是什么呢?   Input 输入数据有若干组,每组数据包含二个整数a,b(0 

程序说明:

第一个程序采用枚举法,即暴力枚举0-99,查找符合要求的数。 第二个程序在第一个的基础上进行了优化,即计算出最小的符合要求的数min,再枚举min-99,节省时间。 另外,此题需特别注意输出格式。  

C++程序(枚举法):

/* HDU2099 整除的尾数 */ #include using namespace std; const int MOD = 100; int main() { int a, b, count; while(cin >> a >> b) { if(a == 0 && b == 0) break; a *= MOD; count = 0; for(int i=0; i 1) printf(" "); printf("%02d", i); } printf(" "); } return 0; }

 

C++程序(优化):

/* HDU2099 整除的尾数 */ #include using namespace std; const int MOD = 100; int main() { int a, b, min; while(cin >> a >> b) { if(a == 0 && b == 0) break; // 计算最小的答案 min = (b - a * MOD % b) % b; // 循环输出结果 for(int i=min; i