分析:水题,模拟一下顺时针和逆时针情况就好了
1 #include "iostream" 2 #include "cstdio" 3 #include "cstring" 4 #include "string" 5 #include "vector" 6 using namespace std; 7 char ch1,ch2; 8 long long n; 9 char cw[]={'v','<','^','>'}; 10 char ccw[]={'v','>','^','<'}; 11 int main() 12 { 13 ch1=getchar(); 14 getchar(); 15 ch2=getchar(); 16 getchar(); 17 cin>>n; 18 int res=n%(long long)4; 19 int flag=0; 20 int pos1,pos2; 21 for(int i=0;i<4;i++){ 22 if(cw[i]==ch1){ 23 pos1=i; break; 24 } 25 } 26 int num1,num2; 27 num1=(pos1+res)%4; 28 if(cw[num1]==ch2){ 29 flag=1; 30 } 31 for(int i=0;i<4;i++){ 32 if(ccw[i]==ch1){ 33 pos2=i; break; 34 } 35 } 36 num2=(pos2+res)%4; 37 if(ccw[num2]==ch2){ 38 if(flag){ 39 flag=3; 40 }else{ 41 flag=2; 42 } 43 } 44 if(flag==1) cout<<"cw"<<endl; 45 else if(flag==2) cout<<"ccw"<<endl; 46 else cout<<"undefined"<<endl; 47 }
分析:水题,注意统计一下任意时刻开着的门有几个
1 #include "iostream" 2 #include "cstdio" 3 #include "cstring" 4 #include "string" 5 using namespace std; 6 const int maxn=500; 7 int n,k; 8 string s; 9 int vis[maxn]; 10 int dp[maxn]; 11 int main() 12 { 13 cin>>n>>k; 14 getchar(); 15 cin>>s; 16 for(int i=0;i<n;i++){ 17 vis[s[i]]++; 18 } 19 int flag=0; 20 for(int i=0;i<n;i++){ 21 if(dp[s[i]-'A']==0){ 22 dp[s[i]-'A']=1; 23 } 24 int cnt=0; 25 for(int j=0;j<26;j++){ 26 if(dp[j]) 27 cnt++; 28 } 29 vis[s[i]]--; 30 if(vis[s[i]]==0) 31 dp[s[i]-'A']=0; 32 if(cnt>k){ 33 flag=1; break; 34 } 35 } 36 if(flag) cout<<"YES"<<endl; 37 else cout<<"NO"<<endl; 38 }
分析:我们把式子变形一下就知道a*b必定是一个数的三次方,然后a和b都能够被那个数整除即可,可以二分或者pow
1 #include "iostream" 2 #include "cstdio" 3 #include "cstring" 4 #include "string" 5 #include "cmath" 6 using namespace std; 7 long long res; 8 int T; 9 bool judge(long long x){ 10 if(x*x*x<=res) 11 return true; 12 else 13 return false; 14 } 15 int main() 16 { 17 scanf("%d",&T); 18 while(T--){ 19 long long a,b; 20 scanf("%lld%lld",&a,&b); 21 res=a*b; 22 long long t=pow(res,1.0/3); 23 while(t*t*t<res){ 24 t++; 25 } 26 int flag=0; 27 if(t*t*t==res&&(a%t==0)&&(b%t==0)){ 28 flag=1; 29 } 30 if(flag){ 31 printf("Yes\n"); 32 }else{ 33 printf("No\n"); 34 } 35 } 36 return 0; 37 }
1 #include "iostream" 2 #include "cstdio" 3 #include "cstring" 4 #include "string" 5 #include "algorithm" 6 using namespace std; 7 long long a,b; 8 int T; 9 int main() 10 { 11 scanf("%d",&T); 12 while(T--){ 13 scanf("%lld%lld",&a,&b); 14 long long res=a*b; 15 long long l=1,r=1e6; 16 int flag=0; 17 while(l<=r){ 18 long long mid=(l+r)/2; 19 long long ans=mid*mid*mid; 20 if(ans==res){ 21 if(a%mid==0&&b%mid==0){ 22 flag=1; break; 23 }else break; 24 }else if(ans<res) l=mid+1; 25 else r=mid-1; 26 } 27 if(flag) printf("Yes\n"); 28 else printf("No\n"); 29 } 30 }