A. The Useless Toy
题目链接:http://codeforces.com/contest/834/problem/A
思路: 水题
实现代码:
#include<bits/stdc++.h> #include<iostream> #include<cstdio> #include<string> #include<cstring> #include<cmath> #include<algorithm> #include<map> #include<queue> #include<stack> #include<set> #include<list> using namespace std; #define ll long long #define sd(x) scanf("%d",&x) #define sdd(x,y) scanf("%d%d",&x,&y) #define sddd(x,y,z) scanf("%d%d%d",&x,&y,&z) #define sf(x) scanf("%s",x) #define ff(i,x,y) for(int i = x;i <= y;i ++) #define fj(i,x,y) for(int i = x;i >= y;i --) #define mem(s,x) memset(s,x,sizeof(s)); #define pr(x) printf("%d",x); const int Mod = 1e9+7; const int inf = 1e9; const int Max = 1e5+10; void exgcd(ll a,ll b,ll& d,ll& x,ll& y){if(!b){d=a;x=1;y=0;}else{exgcd(b,a%b,d,y,x);y-=x*(a/b);}} ll inv(ll a,ll n){ll d, x, y;exgcd(a,n,d,x,y);return (x+n)%n;} int gcd(int a,int b) { return (b>0)?gcd(b,a%b):a; } int lcm(int a, int b) { return a*b/gcd(a, b); } ll mod(ll x,ll y){ return x-(x/y)*y; } int main() { ios::sync_with_stdio(0); cin.tie(0); char a[3]; ll k,b[3]; cin>>a[0]>>a[1]; cin>>k; for(int i=0;i<=1;i++){ if(a[i]=='v') b[i] = 0; if(a[i]=='<') b[i] = 1; if(a[i]=='^') b[i] = 2; if(a[i]=='>') b[i] = 3; } ll ans1 = mod(k+b[0],4); ll ans2 = mod(b[0]-k,4); while(ans2<0) ans2+=4; if(b[1]==ans1&&b[1]==ans2) cout<<"undefined"<<endl; else if(b[1]==ans2) cout<<"ccw"<<endl; else if(b[1]==ans1) cout<<"cw"<<endl; return 0; }
B. The Festive Evening
题目链接:http://codeforces.com/contest/834/problem/B
思路; 水题
实现代码:
#include<bits/stdc++.h> #include<iostream> #include<cstdio> #include<string> #include<cstring> #include<cmath> #include<algorithm> #include<map> #include<queue> #include<stack> #include<set> #include<list> using namespace std; #define ll long long #define sd(x) scanf("%d",&x) #define sdd(x,y) scanf("%d%d",&x,&y) #define sddd(x,y,z) scanf("%d%d%d",&x,&y,&z) #define sf(x) scanf("%s",x) #define ff(i,x,y) for(int i = x;i <= y;i ++) #define fj(i,x,y) for(int i = x;i >= y;i --) #define mem(s,x) memset(s,x,sizeof(s)); #define pr(x) printf("%d",x); const int Mod = 1e9+7; const int inf = 1e9; const int Max = 1e5+10; void exgcd(ll a,ll b,ll& d,ll& x,ll& y){if(!b){d=a;x=1;y=0;}else{exgcd(b,a%b,d,y,x);y-=x*(a/b);}} ll inv(ll a,ll n){ll d, x, y;exgcd(a,n,d,x,y);return (x+n)%n;} int gcd(int a,int b) { return (b>0)?gcd(b,a%b):a; } int lcm(int a, int b) { return a*b/gcd(a, b); } ll mod(ll x,ll y){ return x-(x/y)*y;} char s[1000009]; map<char,int>mp; set<char>st; int main() { int n,m,cnt=1,i,vis[30]; ios::sync_with_stdio(0); cin.tie(0); cin>>n>>m; mp.size(); for(i=0;i<n;i++){ cin>>s[i]; mp[s[i]]=i; } for(i=0;i<n-1;i++){ st.insert(s[i]); if(st.size()>m){ cout<<"YES"<<endl; return 0; } if(mp[s[i]]==i) st.erase(s[i]); } cout<<"NO"<<endl; return 0; }
C. The Meaningless Game
题目链接:http://codeforces.com/contest/834/problem/C
思路:二分,a,b分别*k或*k^2,那么a*b必为k*(k^2)*(k1^2)*k1*.....也就是 (k*k1*..)^3,直接二分搜a*b是否为某个数的三次方,输入输出数据比较大,用scanf和print.要不超时
实现代码:
#include<bits/stdc++.h> #include<iostream> #include<cstdio> #include<string> #include<cstring> #include<cmath> #include<algorithm> #include<map> #include<queue> #include<stack> #include<set> #include<list> using namespace std; #define ll long long #define sd(x) scanf("%d",&x) #define sdd(x,y) scanf("%d%d",&x,&y) #define sddd(x,y,z) scanf("%d%d%d",&x,&y,&z) #define sf(x) scanf("%s",x) #define ff(i,x,y) for(int i = x;i <= y;i ++) #define fj(i,x,y) for(int i = x;i >= y;i --) #define mem(s,x) memset(s,x,sizeof(s)); #define pr(x) printf("%d",x); const int Mod = 1e9+7; const int inf = 1e9; const int Max = 1e5+10; void exgcd(ll a,ll b,ll& d,ll& x,ll& y){if(!b){d=a;x=1;y=0;}else{exgcd(b,a%b,d,y,x);y-=x*(a/b);}} ll inv(ll a,ll n){ll d, x, y;exgcd(a,n,d,x,y);return (x+n)%n;} int gcd(int a,int b) { return (b>0)?gcd(b,a%b):a; } int lcm(int a, int b) { return a*b/gcd(a, b); } int main() { ll n,i,mid,l,r,a,b; cin>>n; for(i=0;i<n;i++){ scanf("%I64d %I64d",&a,&b); l=1;r=1000000; int flag = 0; while(l<=r){ mid = (l+r)/2; //cout<<Pow(mid,3)<<" "<<a*b<<endl; if(mid*mid*mid==a*b){ flag = 1;break;} if(mid*mid*mid>a*b) r = mid-1; if(mid*mid*mid<a*b) l = mid+1; } if(flag&&a*a%b==0&&b*b%a==0) printf("Yes "); else printf("No "); } return 0; }