題目描述 對於一個五位數a1a2a3a4a5,可將其拆分為三個子數: sub1=a1a2a3 sub2=a2a3a4 sub3=a3a4a5 例如,五位數20207可以拆分成 sub1=202 sub2=020(=20) sub3=207 現在給定一個正整數K,要求你編程求出10000到30000之 ...
題目描述
對於一個五位數a1a2a3a4a5,可將其拆分為三個子數:
sub1=a1a2a3
sub2=a2a3a4
sub3=a3a4a5
例如,五位數20207可以拆分成
sub1=202
sub2=020(=20)
sub3=207
現在給定一個正整數K,要求你編程求出10000到30000之間所有滿足下述條件的五位數,條件是這些五位數的三個子數sub1,sub2,sub3都可被K整除。
輸入輸出格式
輸入格式:
輸入由鍵盤輸入,輸入僅一行,為正整數K
輸出格式:
輸出到文件,輸出文件的每一行為一個滿足條件的五位數,要求從小到大輸出。不得重覆輸出或遺漏。如果無解,則輸出“No”。
輸入輸出樣例
輸入樣例#1:15輸出樣例#1:
22555 25555 28555 30000
說明
0<K<1000
日常刷水題,
對於每一個數,把這個數拆開就好!
1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<cmath> 5 #include<queue> 6 using namespace std; 7 const int MAXN=200001; 8 const int INF = 1e8; 9 inline void read(int &n) 10 { 11 char c='+';int x=0;bool flag=0; 12 while(c<'0'||c>'9'){c=getchar();if(c=='-')flag=1;} 13 while(c>='0'&&c<='9'){x=x*10+c-48;c=getchar();} 14 n=flag==1?-x:x; 15 } 16 int a[6]; 17 int main() 18 { 19 int n;read(n);bool flag=0; 20 for(int i=10000;i<=30000;i++) 21 { 22 int p=i,tot=0; 23 while(p) a[++tot]=p%10,p/=10; 24 if((((a[1]+a[2]*10+a[3]*100)%n)==0)&&(((a[2]+a[3]*10+a[4]*100)%n)==0)&&(((a[3]+a[4]*10+a[5]*100)%n)==0)) 25 printf("%d\n",i),flag=1; 26 } 27 if(flag==0)cout<<"No"; 28 return 0; 29 }