问题:1457 - 子数整除
类型:循环应用
题目描述:
于一个五位数 abcde ,可将其拆分为三个子数:
sub1=abc
sub2=bcd
sub3=cde
例如,五位数20207 可以拆分成sub1=202
sub2=020 (也就是 20)
sub3=207
现在给定一个正整数 K ,要求你编程求出 10000 到30000 之间所有满足下述条件的五位数,条件是这些五位数的三个子数sub1,sub2,sub3 都可被 K 整除。
输入:
一个正整数K(0<K<1000) 。
输出:
每一行为一个满足条件的五位数,要求从小到大输出。
不得重复输出或遗漏。如果无解,则输出 No。
样例:
输入:
15
输出:
22555
25555
28555
30000
完整代码如下:
#include <bits/stdc++.h> // 包含常用头文件
using namespace std;
int main() {
// 数据定义
int k, sub1, sub2, sub3;
bool isFind = false;
// 数据输入
cin >> k; // 读取用户输入的K值
// 数据计算
for (int i = 10000; i <= 30000; i++) {
sub1 = i / 100;
sub2 = (i / 10) % 1000;
sub3 = i % 1000;
if (sub1 % k == 0 && sub2 % k == 0 && sub3 % k == 0) {
if (!isFind) isFind = true;
cout << i << endl;
}
}
// 输出结果
if (!isFind) {
cout << "No";
}
return 0; // 程序正常结束
}