问题: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; // 程序正常结束
}