https://ac.nowcoder.com/acm/contest/330#question
A.Applese 的取石子游戏
#include <bits/stdc++.h> using namespace std; const int maxn = 1e5 + 10; int N; int a[maxn]; int main() { scanf("%d", &N); int sum1 = 0, sum2 = 0; for(int i = 0; i < N; i ++) { scanf("%d", &a[i]); if(i % 2 == 0) sum1 += a[i]; else sum2 += a[i]; } if(sum1 > sum2 || sum2 > sum1) printf("Applese "); else printf("Bpplese "); return 0; }
简单博弈 送温暖
B.Applese 走方格
#include <bits/stdc++.h> using namespace std; int N, M; string ans = ""; int main() { scanf("%d%d", &N, &M); if(N % 2 && M % 2) printf("-1 "); else if(N == 1 && M == 2) printf("RL "); else if(N == 2 && M == 1) printf("DU "); else if(N == 1 && M != 2 || N != 2 && M == 1) printf("-1 "); else { if(M % 2 == 0) { for(int i = 0; i < N - 1; i ++) ans += 'D'; for(int i = 0; i < M / 2 - 1; i ++) { ans += 'R'; for(int j = 0; j < N - 2; j ++) ans += 'U'; ans += 'R'; for(int j = 0; j < N - 2; j ++) ans += 'D'; } ans += 'R'; for(int i = 0; i < N - 1; i ++) ans += 'U'; for(int i = 0; i < M - 1; i ++) ans += 'L'; } else { for(int i = 0; i < M - 1; i ++) ans += 'R'; for(int i = 0; i < N / 2 - 1; i ++) { ans += 'D'; for(int j = 0; j < M - 2; j ++) ans += 'L'; ans += 'D'; for(int j = 0; j < M - 2; j ++) ans += 'R'; } ans += 'D'; for(int i = 0; i < M - 1; i ++) ans += 'L'; for(int i = 0; i < N - 1; i ++) ans += 'U'; } cout << ans << endl; } return 0; }
如果 N M 都是奇数的话输出 -1 如果 N M 中有一个是 1 的话 另一个不能超过 2 即 N = 1, M = 2 和 N = 2, M = 1 是可以的 其他情况模拟就好了 然而因为 Be 主当时多余的三句话导致 wa 了 10 发 怀疑人生
E.Applese 涂颜色
#include <bits/stdc++.h> using namespace std; const int mod = 1e9+7; typedef long long ll; ll phi(ll n) { int ans=n,temp=n; for(int i=2;i*i<=temp;i++) { if(temp%i==0) { ans-=ans/i; while(temp%i== 0) temp/=i; } } if(temp>1) ans-=ans/temp; return ans; } ll mod_pow(ll x,ll n,ll mod) { ll ans=1; while(n) { if(n%2==1) ans=ans*x%mod; x=x*x%mod; n/=2; } return ans; } ll a,c; char b[1000010], m[1000010]; int main() { scanf("%s%s", b, m); //c %= mod; //a %= mod; ll phic=phi(mod); int i,len=strlen(b); ll res=0,ans; for( i=0;i<len;i++) { res=res*10+b[i]-'0'; if(res>phic) break; } if(i==len) { ans=mod_pow(2,res,mod)%mod; } else { res=0; for(int i=0;i<len;i++) { res=res*10+b[i]-'0'; res%=phic; } ans=mod_pow(2,res+phic,mod)%mod; } cout<< ans <<endl; return 0; }
欧拉函数 答案就是 $2^N$
I.Applese 的回文串
#include <bits/stdc++.h> using namespace std; bool IsHuiWen(string str) { for(int i = 0; i < (int)str.size() / 2;i ++) { if(str[i] != str[str.size() - 1 - i]) return false; } return true; } int main() { string str; cin >> str; bool flag = false; int i; for(i = 0; i < (int)str.size() / 2; i ++) { if(str[i] != str[str.size() - 1 - i]) break; } if(i == (int)str.size() / 2) flag = true; else flag = (IsHuiWen(str.substr(i + 1, str.size() - 2 * i - 1)) || IsHuiWen(str.substr(i, str.size() - 2 * i - 1))); cout << ((flag == true) ? "Yes" : "No")<<endl; return 0; }
时间复杂度为 O(N) 学到了
J.Applese 的减肥计划
#include <bits/stdc++.h> using namespace std; #define pi 3.1415926535897932384626433832795028841971 int F1, F2, a; int main() { scanf("%d%d%d", &F1, &F2, &a); double ans = 1.0 * F1 * F1 + 1.0 * F2 * F2 + 2.0 * F1 * F2 * cos(1.0 * a * pi / 180); printf("%.10lf ", sqrt(ans)); return 0; }
$F1^2 + F2^2 + 2 * F1 * F2 * cos(a)$
FHFHFH