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

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\n");
        else
        printf("No\n");
    }
    return 0;
}

 

posted @ 2017-08-08 20:17  冥想选手  阅读(226)  评论(0编辑  收藏  举报