トレーニング
実際にやってみた。
/* ID: fujiyou1 PROG: ride LANG: C++ */ #include <iostream> #include <fstream> #include <string> using namespace std; typedef long long ll; int main() { ofstream fout ("ride.out"); ifstream fin ("ride.in"); string comet, group; fin >> comet >> group; ll c=1,g=1; for (int i=0; i<comet.length(); i++) c *= (comet[i]-'A'+1); for (int i=0; i<group.length(); i++) g *= (group[i]-'A'+1); if (c%47==g%47) fout << "GO" << endl; else fout << "STAY" << endl; return 0; } /* ID: fujiyou1 PROG: gift1 LANG: C++ */ #include <iostream> #include <fstream> #include <string> #include <map> #include <vector> using namespace std; int main() { ofstream fout ("gift1.out"); ifstream fin ("gift1.in"); int np; string in; map<string, int> p, d; vector<string> name; fin >> np; for (int i=0; i<np; i++) { fin >> in; p[in]=0; d[in]=0; name.push_back(in); } while (fin >> in) { int a, n; fin >> a >> n; if (n!=0) { d[in] += a/n*n; for (int i=0; i<n; i++) { fin >> in; p[in] += a/n; } } } for (int i=0; i<np; i++) fout << name[i] << " " << p[name[i]]-d[name[i]] << endl; return 0; } /* ID: fujiyou1 PROG: friday LANG: C++ */ #include <iostream> #include <fstream> #include <string> using namespace std; int main() { ofstream fout ("friday.out"); ifstream fin ("friday.in"); int n, now=0; int norm[] = {31,28,31,30,31,30,31,31,30,31,30,31}, leap[] = {31,29,31,30,31,30,31,31,30,31,30,31}; int res[] = {1,0,0,0,0,0,0}; fin >> n; for (int i=1900; i<1900+n; i++) { if (i%400==0||(i%100!=0&&i%4==0)) { for (int j=0; j<12; j++) { now = (now+leap[j]%7)%7; if (i!=1900+n-1||j!=11) res[now]++; } } else { for (int j=0; j<12; j++) { now = (now+norm[j]%7)%7; if (i!=1900+n-1||j!=11) res[now]++; } } } for (int i=0; i<6; i++) fout << res[i] << " "; fout << res[6] << endl; return 0; } /* ID: fujiyou1 PROG: beads LANG: C++ */ #include <iostream> #include <fstream> #include <string> #include <algorithm> using namespace std; int main() { ofstream fout ("beads.out"); ifstream fin ("beads.in"); int n, res=0; string b; fin >> n >> b; b += b; int next=0, now=0; char f,s; while (now<n) { f=b[now]; int cnt=0; if (f=='w') { while (b[now]=='w') { now++; cnt++; } f=b[now]; } while (b[now]==f||b[now]=='w') { now++; cnt++; } next=now; if (b[next-1]=='w') { next--; while (b[next]=='w'&&next>=0) next--; next++; } s=b[now]; while (b[now]==s||b[now]=='w') { now++; cnt++; } //cout << cnt << b[next] << next << endl; now=next; res=max(res,cnt); } if (res>n) res=n; fout << res << endl; return 0; }
異常