網站介紹:http://it-easy.tw/zerojudge/
目前解答有以下:
a054 a058 a059 a065 a095 a104 a121 a147
a148 a149 a215 a216 a224 a225
a054: 電話客服中心http://zerojudge.tw/ShowProblem?problemid=a054
#include <cstdlib> #include <iostream> #include <string> #include <stdlib.h> using namespace std; char Word (int ww) { char a; switch (ww) { case 10: a='A'; break; case 11: a='B'; break; case 12: a='C'; break; case 13: a='D'; break; case 14: a='E'; break; case 15: a='F'; break; case 16: a='G'; break; case 17: a='H'; break; case 34: a='I'; break; case 18: a='J'; break; case 19: a='K'; break; case 20: a='L'; break; case 21: a='M'; break; case 22: a='N'; break; case 35: a='O'; break; case 23: a='P'; break; case 24: a='Q'; break; case 25: a='R'; break; case 26: a='S'; break; case 27: a='T'; break; case 28: a='U'; break; case 29: a='V'; break; case 32: a='W'; break; case 30: a='X'; break; case 31: a='Y'; break; case 33: a='Z'; break; } return a; } int main(int argc, char *argv[]) { string a; int b[]= {10,11,12,13,14,15,16,17,34,18,19,20,21,22,35,23,24,25,26,27,28,29,32,30,31,33}; while(getline(cin,a)) { int check=0; int j=8; for (int i=0; i <= 8 ; i++) { check = check + (a[i]-48)*j ; j--; } for(int i = 0 ; i<=25 ; i++) { if((a[8]-48) != 0) { int y; y = (b[i]/10)+((b[i]%10)*9); int x; x = check + y; if((x % 10) == 10 -(a[8]-48)) cout << Word(b[i]) ; }else{ int y; y = (b[i]/10)+((b[i]%10)*9); int x; x = check + y; if((x % 10) == 0) cout << Word(b[i]); } } cout << endl; } return EXIT_SUCCESS; }
a058: MOD3http://zerojudge.tw/ShowProblem?problemid=a058
這題題意是:先輸入一個數字,比方說 5,表示你接下來即將輸入五個數字
接著,輸入的五個數字中,有多少個是 餘數是3、多少個 餘數是3+1、多少個 餘數是 3+2
#include <iostream> using namespace std; int main() { int c; int i=0; int j=0; int k=0; cin >> c; while (c--) { int g; cin >> g; if(g%3==0) i++; if(g%3==1) j++; if(g%3==2) k++; } cout << i <<" " << j << " " << k << endl; system("PAUSE"); return 0; }
a059: 完全平方和http://zerojudge.tw/ShowProblem?problemid=a059
#include <iostream> #include <math.h> using namespace std; int main(int argc, char *argv[]) { int y=0; int yy[32]; for(int i = 1 ; i <=32;i++) { if (i*i <1000) { yy[y]=i*i; y++; } } int c; cin >> c; int d=c*2; int g[d]; int e=0; while (d--) { cin >> g[e]; e++; } int Case =1; for(int i=0 ; i <(c*2);i=i+2) { int xx=0; for(int j=g[i]; j<=g[i+1];j++) { for(int k =0 ; k < 32;k++) { if(j==yy[k]) xx=xx+j; } } cout << "Case " <<Case<<": "<<xx<<endl; Case++; } return 0; }
a065: 提款卡密碼http://zerojudge.tw/ShowProblem?problemid=a065
#include <cstdlib> #include <iostream> #include <string> #include <math.h> using namespace std; int main(int argc, char *argv[]) { string a; while(cin >> a) { for(int i=0 ; i<a.length()-1; i++) cout<< abs(a[i]-a[i+1]); cout << endl; } return 0; }
a095: 麥哲倫的陰謀http://zerojudge.tw/ShowProblem?problemid=a095
這題還蠻奇怪的...解答很簡單,白帽子的人都等到紅帽子的走光才會離開
#include <iostream> using namespace std; int main(int argc, char *argv[]) { int a,b; while(cin >> a >> b) { if (a==b) cout << b; else cout << b + 1; cout << endl; } system("PAUSE"); return 0; }
a104: 排序http://zerojudge.tw/ShowProblem?problemid=a104
#include <iostream> using namespace std; int main(int argc, char *argv[]) { int a; while(cin >> a) { int b[a]; int c=0; while(a--) { cin >> b[c]; c++; } for(int i=0 ; i<c;i++) for(int j=i+1; j<c;j++) if(b[j] <= b[i]) { int temp=0; temp=b[i]; b[i]=b[j]; b[j]=temp; } for(int i=0 ; i<c; i++) cout << b[i] <<" "; cout << endl; } return 0; }
a121: 質數又來囉 http://zerojudge.tw/ShowProblem?problemid=a121
這題建議把運算是不是質數的副程式拿出來另外做,另外運算只需要算到某數的平方根即可
#include <iostream> //#include <String> #include <math.h> using namespace std; int Prime(int in) { int check=0; for(int i=2 ; i <=sqrt(in);i++) { if(in % i == 0) { check=1; break; } } if (in==1) check=1; return check; } int main(int argc, char *argv[]) { int a,b; while(cin >> a >> b) { int p=0; for(int i = a ; i <= b ; i ++) { if(Prime(i)==0) p++; } cout << p << endl; } return 0; }
a147: Print it all http://zerojudge.tw/ShowProblem?problemid=a147
#include <iostream> using namespace std; int main(int argc, char *argv[]) { int a; while(cin>> a) { if( a==0) break; for (int i=1 ; i < a; i++) { if(i%7==0) continue; cout << i << " "; } cout << endl; } return 0; }
a148: You Cannot Pass?!http://zerojudge.tw/ShowProblem?problemid=a148
#include <iostream> using namespace std; int main(int argc, char *argv[]) { int a; while(cin >> a) { int b[a]; int c = a; int z=0; while(a--) { cin >> b[z]; z++; } float total=0; for(int i=0 ;i<c;i++) { total=total+b[i]; } if ((total / c)>59) cout <<"no"<< endl; else cout <<"yes"<< endl; } return 0; }
a149: 乘乘樂 http://zerojudge.tw/ShowProblem?problemid=a149
禁止使用string
#include <iostream> using namespace std; int main(int argc, char *argv[]) { int a = 0; cin >> a; int g[a]; int L=0; while(a--) { char s[11]; //利用char矩陣來做 cin >> s; //輸入字串 int b=0,sum=1; for(b=0;s[b]!=0; b++) //開始計算,直到字串遇到0就跳出迴圈 sum *= s[b]-'0'; g[L]=sum; L++; } for(int i=0;i<L;i++) cout << g[i] << endl; return 0; }
a215: 明明愛數數http://zerojudge.tw/ShowProblem?problemid=a215
#include <cstdlib> #include <iostream> #include <string> using namespace std; int main(int argc, char *argv[]) { int a,b; while(cin >> a >> b) { int i; int sum =0; for(i=0 ; i <= 99999 ; ++i) { sum = sum + (a + i); if( sum > b) break; } cout << i+1 << endl; } system("PAUSE"); return EXIT_SUCCESS; }
a216: 數數愛明明http://zerojudge.tw/ShowProblem?problemid=a216
#include <cstdlib> #include <iostream> #include <string> using namespace std; int main(int argc, char *argv[]) { long long int a; while(cin >> a) { long long f1=0; long long f2=0; for ( long long int i=0 ; i <= a ; i++) { f1= f1 + i; f2= f1+f2; } cout<<f1 <<" " << f2 ; cout << endl; } system("PAUSE"); return EXIT_SUCCESS; }a224: 明明愛明明 http://zerojudge.tw/ShowProblem?problemid=a224
直接計算字串內每個字母有多少個,接著只要超過兩個字母以上是奇數,就不能迴圈
#include <cstdlib> #include <iostream> #include<stdio.h> using namespace std; int main(int argc, char *argv[]) { char s[1001]; while(gets(s)) { int num[26]={}; for(int i=0;s[i]!=0;i++) { if(s[i]>='A' && s[i]<='Z') num[s[i]-'A']=num[s[i]-'A']+1; else if(s[i]>='a' && s[i]<='z') num[s[i]-'a']=num[s[i]-'a']+1; } int check=0; for(int i=0;i<26;i++) check += num[i]%2; if(check >1) cout<<"no..."<<endl; else cout<<"yes !"<<endl; } return EXIT_SUCCESS; }a225: 明明愛排列 http://zerojudge.tw/ShowProblem?problemid=a225
總共三個階段:輸入、排列個位數、個位數相同時排列大小
#include <cstdlib> #include <iostream> using namespace std; int main(int argc, char *argv[]) { int a; while(cin >> a) { if( cin.eof() ) break; int b[a]; int c=0; while(a--) { cin >> b[c]; c++; } for(int i=0;i<c ;i++) { for(int j=i+1; j<c ; j++) { int temp=0; if(b[i]%10 > b[j]%10) { temp = b[i]; b[i]=b[j]; b[j]=temp; } } } for(int i=0;i<c ;i++) { for(int j=i+1; j<c ; j++) { int temp=0; if((b[i]%10 == b[j]%10) && (b[i]<b[j]) ) { temp = b[i]; b[i]=b[j]; b[j]=temp; } } } for(int i=0;i<c ;i++) cout << b[i]<<" "; cout << endl; } return EXIT_SUCCESS; }