子数整数
<center>
提交: 64 解决: 39
[ 提交][ 状态][ 讨论版] </center>
问题 E: 子数整数
时间限制: 1 Sec 内存限制: 128 MB提交: 64 解决: 39
[ 提交][ 状态][ 讨论版] </center>
题目描述
对于一个五位数a1a2a3a4a5,可将其拆分为三个子数:
sub1=a1a2a3
sub2=a2a3a4
sub3=a3a4a5
例如,五位数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 <iostream> #include <cstdio> using namespace std; int main() { int k; int b; int y=0; int a1,a2,a3,a4,a5; int sub1,sub2,sub3; scanf("%d",&k); for(int i=10000;i<=30000;i++){ b=i; sub1=b/100; a1=b/10000; a5=b%10; b/=10; a4=b%10; b/=10; a3=b%10; b/=10; a2=b%10; sub2=a2*100+a3*10+a4; sub3=a3*100+a4*10+a5; if(sub1%k==0&&sub2%k==0&&sub3%k==0){ printf("%d\n",i); y=1; } } if(y==0){ printf("No"); } return 0; } /************************************************************** Problem: 1820 User: zz13 Language: C++ Result: 正确 Time:4 ms Memory:1696 kb ****************************************************************/