Codeforces Round #426 (Div. 2) A,B,C

时间:2023-03-08 21:31:51

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+;
const int inf = 1e9;
const int Max = 1e5+;
void exgcd(ll a,ll b,ll& d,ll& x,ll& y){if(!b){d=a;x=;y=;}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>)?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();
cin.tie();
char a[];
ll k,b[];
cin>>a[]>>a[];
cin>>k;
for(int i=;i<=;i++){
if(a[i]=='v') b[i] = ;
if(a[i]=='<') b[i] = ;
if(a[i]=='^') b[i] = ;
if(a[i]=='>') b[i] = ;
}
ll ans1 = mod(k+b[],);
ll ans2 = mod(b[]-k,);
while(ans2<)
ans2+=;
if(b[]==ans1&&b[]==ans2)
cout<<"undefined"<<endl;
else if(b[]==ans2)
cout<<"ccw"<<endl;
else if(b[]==ans1)
cout<<"cw"<<endl;
return ;
}

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+;
const int inf = 1e9;
const int Max = 1e5+;
void exgcd(ll a,ll b,ll& d,ll& x,ll& y){if(!b){d=a;x=;y=;}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>)?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[];
map<char,int>mp;
set<char>st;
int main()
{
int n,m,cnt=,i,vis[];
ios::sync_with_stdio();
cin.tie();
cin>>n>>m;
mp.size();
for(i=;i<n;i++){
cin>>s[i];
mp[s[i]]=i;
}
for(i=;i<n-;i++){
st.insert(s[i]);
if(st.size()>m){
cout<<"YES"<<endl;
return ;
}
if(mp[s[i]]==i)
st.erase(s[i]);
}
cout<<"NO"<<endl;
return ;
}

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+;
const int inf = 1e9;
const int Max = 1e5+;
void exgcd(ll a,ll b,ll& d,ll& x,ll& y){if(!b){d=a;x=;y=;}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>)?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=;i<n;i++){
scanf("%I64d %I64d",&a,&b);
l=;r=;
int flag = ;
while(l<=r){
mid = (l+r)/;
//cout<<Pow(mid,3)<<" "<<a*b<<endl;
if(mid*mid*mid==a*b){
flag = ;break;}
if(mid*mid*mid>a*b)
r = mid-;
if(mid*mid*mid<a*b)
l = mid+;
}
if(flag&&a*a%b==&&b*b%a==)
printf("Yes\n");
else
printf("No\n");
}
return ;
}