1. 程式人生 > >UVA - 725 Division

UVA - 725 Division

algo std vision visio 情況 break () 代碼 http

題目鏈接https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=666

題目大意:

輸入一個n,求出所有abcde/fghij=n的情況。

思路:枚舉所有情況。因為枚舉的數字是從01234~98765,時間是 不可能超限的。

ps:註意格式,搞不好就PE

這題格式好怪,反正我是不知道為啥是這種格式。。。

代碼:

 1 #include<iostream>
 2 #include<stdio.h>
 3 #include<string
.h> 4 #include<algorithm> 5 using namespace std; 6 int main () 7 { 8 int n; 9 int T=0; 10 while(cin>>n) 11 { 12 if(n==0) break; 13 if(T++) cout<<endl; 14 int vis[15]; 15 bool flag=false; 16 for (int i=1234;i<=98765
;i++) 17 { 18 bool fl=true; 19 memset(vis,0,sizeof(vis)); 20 int tmp=i*n; 21 if(tmp>98765) 22 break; 23 int a,b,c,d,e,f,g,h,x,j; 24 a=i/10000; 25 vis[a]++; 26 b=(i/1000)%10; 27 vis[b]++;
28 c=((i/100)%100)%10; 29 vis[c]++; 30 d=(((i/10)%1000)%100)%10; 31 vis[d]++; 32 e=i%10; 33 vis[e]++; 34 f=tmp/10000; 35 vis[f]++; 36 g=(tmp/1000)%10; 37 vis[g]++; 38 h=((tmp/100)%100)%10; 39 vis[h]++; 40 x=(((tmp/10)%1000)%100)%10; 41 vis[x]++; 42 j=tmp%10; 43 vis[j]++; 44 for(int k=0;k<10;k++) 45 { 46 if(vis[k]>1) 47 fl=false; 48 } 49 if(fl) 50 { 51 if(tmp<10000&&i<10000) 52 cout<<0<<tmp<<" / "<<0<<i<<" = "<<n<<endl; 53 else if(tmp<10000) 54 cout<<0<<tmp<<" / "<<i<<" = "<<n<<endl; 55 else if(i<10000) 56 cout<<tmp<<" / "<<0<<i<<" = "<<n<<endl; 57 else 58 cout<<tmp<<" / "<<i<<" = "<<n<<endl; 59 flag=true; 60 } 61 } 62 if(!flag) 63 cout<<"There are no solutions for "<<n<<.<<endl; 64 } 65 return 0; 66 }

UVA - 725 Division