洛谷子数整数题目
子数整数
题目描述
对于一个五位数 a 1 a 2 a 3 a 4 a 5 a_1a_2a_3a_4a_5 a1a2a3a4a5,可将其拆分为三个子数:
s u b 1 = a 1 a 2 a 3 sub_1=a_1a_2a_3 sub1=a1a2a3
s u b 2 = a 2 a 3 a 4 sub_2=a_2a_3a_4 sub2=a2a3a4
s u b 3 = a 3 a 4 a 5 sub_3=a_3a_4a_5 sub3=a3a4a5
例如,五位数 20207 20207 20207可以拆分成
s u b 1 = 202 sub_1=202 sub1=202
s u b 2 = 020 ( = 20 ) sub_2=020(=20) sub2=020(=20)
s u b 3 = 207 sub_3=207 sub3=207
现在给定一个正整数 K K K,要求你编程求出 10000 10000 10000到 30000 30000 30000之间所有满足下述条件的五位数,条件是这些五位数的三个子数 s u b 1 , s u b 2 , s u b 3 sub_1,sub_2,sub_3 sub1,sub2,sub3都可被 K K K整除。
输入格式
一个正整数K
输出格式
每一行为一个满足条件的五位数,要求从小到大输出。不得重复输出或遗漏。如果无解,则输出“No”。
样例 #1
样例输入 #1
15
样例输出 #1
22555
25555
28555
30000
提示
0 < K < 1000 0<K<1000 0<K<1000
#include <stdio.h>
int main() {
int n, i;
int k;
int sub[3];
int count = 0;
scanf("%d", &k);
for (i = 10000; i <= 30000; i++) {
n = 0;
sub[0] = i / 100;
sub[1] = (i - (i / 10000) * 10000) / 10;
sub[2] = (i - (i / 10000) * 10000) - ((i - (i / 10000) * 10000) / 1000) * 1000;
for (int j = 0; j < 3; j++) {
if (sub[j] % k == 0)
n++;
}
if (n == 3) {
printf("%d\n", i);
count++;
}
}
if (count == 0) {
printf("No");
}
}