洛谷-P1151 子数整数
题目描述
对于一个五位数(a_1a_2a_3a_4a_5),可将其拆分为三个子数:
(sub_1=a_1a_2a_3)
(sub_2=a_2a_3a_4)
(sub_3=a_3a_4a_5)
例如,五位数(20207)可以拆分成
(sub_1=202)
(sub_2=020(=20))
(sub_3=207)
现在给定一个正整数(K),要求你编程求出(10000)到(30000)之间所有满足下述条件的五位数,条件是这些五位数的三个子数(sub_1,sub_2,sub_3)都可被(K)整除。
输入格式
一个正整数K
输出格式
每一行为一个满足条件的五位数,要求从小到大输出。不得重复输出或遗漏。如果无解,则输出“No”。
输入输出样例
输入 #1
15
输出 #1
22555
25555
28555
30000
说明/提示
0<K<1000
C++代码
#include <iostream>
using namespace std;
int a[30005];
int main() {
int k, sub1, sub2, sub3, n=0;
cin >> k;
for (int i=10000; i<=30000; ++i) {
sub1 = i / 100;
sub2 = (i - i / 10000 * 10000) / 10;
sub3 = i - i / 1000 * 1000;
if (sub1%k==0 && sub2%k==0 && sub3%k==0)
a[n++] = i;
}
if (n == 0)
cout << "No" << endl;
else
for (int i=0; i<n; ++i)
cout << a[i] << endl;
return 0;
}