精進三問
全部貪欲の簡単問題なのでコードのみ。
実装ミスとかのタイムロスを減らしていきたい。
1218
#include <cstdio> #include <vector> using namespace std; int main() { int t; scanf("%d",&t); for (int ix=0; ix<t; ix++) { int n; scanf("%d",&n); vector<bool> jail(n,true); for (int i=2; i<=n; i++) { for (int j=i-1; j<n; j+=i) { jail[j]=!jail[j]; } } int res=0; for (int i=0; i<n; i++) if (jail[i]) res++; printf("%d\n",res); } }
1247
#include <cstdio> #include <vector> using namespace std; int main() { int n; while (scanf("%d",&n)&&n!=0) { vector<int> in(n); int sum=0; for (int i=0; i<n; i++) { scanf("%d",&in[i]); sum+=in[i]; } int i; for (i=1; i<=n; i++) { int rsum=0; for (int j=0; j<i; j++) rsum+=in[j]; if (rsum==sum-rsum) break; } if (i==n+1) { printf("No equal partitioning.\n"); } else { printf("Sam stops at position %d and Ella stops at position %d.\n",i,i+1); } } }
1298
#include <iostream> #include <string> #include <cmath> #include <cstring> using namespace std; int main() { string tmp; while (getline(cin,tmp)) { if (tmp=="START"||tmp=="END") continue; if (tmp=="ENDOFINPUT") break; for (int i=0; i<tmp.length(); i++) { if (isalpha(tmp[i])) { tmp[i]+='V'-'A'; if (tmp[i]>'Z') tmp[i]-=26; } } cout<<tmp<<endl; } }