「AOJ0111~120」の編集履歴(バックアップ)一覧に戻る
#include<iostream> #include<map> #include<string> using namespace std; map<char,string> e; map<string,char> d; std::string noToCode(int no){ std::string ans="01234"; for(int i=0;i<5;i++){ ans[4-i]=no%2+'0'; no=no/2; } return ans; } void setMap(){ for(int i=0;i<26;i++){ e['A'+i]=noToCode(i); } e[' '] = "11010"; e['.'] = "11011"; e[','] = "11100"; e['-'] = "11101"; e['\'']= "11110"; e['?'] = "11111"; d["101"] = ' '; d["000000"] = '\''; d["000011"] = ','; d["10010001"] = '-'; d["010001"] = '.'; d["000001"] = '?'; d["100101"] = 'A'; d["10011010"] = 'B'; d["0101"] = 'C'; d["0001"] = 'D'; d["110"] = 'E'; d["01001"] = 'F'; d["10011011"] = 'G'; d["010000"] = 'H'; d["0111"] = 'I'; d["10011000"] = 'J'; d["0110"] = 'K'; d["00100"] = 'L'; d["10011001"] = 'M'; d["10011110"] = 'N'; d["00101"] = 'O'; d["111"] = 'P'; d["10011111"] = 'Q'; d["1000"] = 'R'; d["00110"] = 'S'; d["00111"] = 'T'; d["10011100"] = 'U'; d["10011101"] = 'V'; d["000010"] = 'W'; d["10010010"] = 'X'; d["10010011"] = 'Y'; d["10010000"] = 'Z'; } int main(){ setMap(); string line,put1,ans; int p,k,size; while(getline(cin,line)){ put1=""; for(int i=0;i<line.size();i++){ put1.append(e[line[i]]); } ans=""; p=0; size=put1.size(); while(p<size){ for(int k=3;k<9;k++){ if(p+k>size){ p=size; break; } line=put1.substr(p,k); if(d.find(line)!=d.end()){ ans+=d[line]; p=p+k-1; break; } } p++; } cout<<ans<<"\n"; } }
#include <algorithm> #include <iostream> long long int t[10001]; void calc(int n){ long long int ans=0; for(int i=0;i<n;i++){ std::cin>>t[i]; } std::sort(t,t+n); for(int i=0;i<n;i++){ ans+=t[i]*(n-i-1); } std::cout<<ans<<"\n"; } int main(){ int n; while(1){ scanf("%d",&n); if(n==0)break; calc(n); } }
#include<stdio.h> #include<map> void calc(int p,int q){ std::map<int,int> memo; int t,i=0; memo[p]=-1; while(1){ p*=10; t=(p/q)%10; p=p%q; if(p==0){ printf("%d\n",t); return; }else if(memo.find(p)==memo.end()){ printf("%d",t); memo[p]=i; }else{ printf("%d\n",t); break; } i++; } for(q=0;q<=i;q++){ printf("%c",q<=memo[p]?' ':'^'); } printf("\n"); } int main(){ int p,q; while(scanf("%d %d",&p,&q)!=EOF){ calc(p,q); } }
#include <iostream> #include<stdio.h> long long int gcd(long long int a, long long int b) { long long int c; while (b != 0) { c = a % b; a = b; b = c; } return a; } long long int re(long long int x,long long int m){ long long int ans=1,t=x%m; while(t!=1){ t=(t*x)%m; ans++; } return ans; } int main(){ long long int a1,a2,a3,m1,m2,m3,t,n1,n2,n3,c; while(1){ std::cin>>a1>>m1>>a2>>m2>>a3>>m3; if(a1==0) break; n1=re(a1,m1); n2=re(a2,m2); n3=re(a3,m3); c=n1*(n2/gcd(n1,n2)); c=c*(n3/gcd(n3,c)); std::cout<<c<<"\n"; } }