zoukankan      html  css  js  c++  java
  • Codeforces Round #292 (Div. 2)

    A .Drazil and Date

    题目大意:问是否有一条路径,从(0,0)到(x,y)正好走s步的路线存在,每步可以上下左右移动一格

    思路:显然先计算出(0,0)到(x,y)的最短距离后,看剩下的步数是否是偶数就可以了,注意x,y为负数的情况

     1 #include<cstdio>
     2 #include<algorithm>
     3 using namespace std;
     4 int mabs(int x)
     5 {
     6     if(x>0)return x;else return -x;
     7 }
     8 int main()
     9 {
    10     int n,m,step;
    11     scanf("%d%d%d",&n,&m,&step);
    12     int u=mabs(n)+mabs(m);
    13     if(u>step)printf("No
    ");
    14     else if((step-u)&1)printf("No
    ");
    15     else printf("Yes
    ");
    16     return 0;
    17 }
    View Code

    B. Drazil and His Happy Friends

    题目大意:n个男生从0编号到n-1,m个女生编号从0到m-1,男女中有些快乐有些不快乐,每次邀请编号为i mod n的男生和i mod m编号的女生,只要有一个快乐,两个人就都快乐了,问是否有可能让所有人都快乐?

    思路:感觉使劲想应该有数学公式可以推的,懒了那么一下下于是一个大模拟搞定

     1 #include<iostream>
     2 #include<algorithm>
     3 #include<cstdio>
     4 #define maxn 1000
     5 using namespace std;
     6 int boy[maxn],girl[maxn],b,g,x;
     7 int main()
     8 {
     9     int n,m;
    10     scanf("%d%d",&n,&m);
    11     scanf("%d",&b);
    12     for(int i=1;i<=b;i++)
    13     {
    14         scanf("%d",&x);
    15         boy[x]=1;
    16     }
    17     scanf("%d",&g);
    18     for(int i=1;i<=g;i++)
    19     {
    20         scanf("%d",&x);
    21         girl[x]=1;
    22     }
    23     int max_=max(n,m);
    24     for(int i=0;i<max_*100;i++)
    25     {
    26         girl[i%m]=boy[i%n]=girl[i%m]|boy[i%n];
    27     }
    28     for(int i=0;i<n;i++)
    29     {
    30         if(boy[i]==0){printf("No
    ");return 0;}
    31         //printf("%d ",boy[i]);
    32     }
    33     for(int i=0;i<m;i++)if(girl[i]==0){printf("No
    ");return 0;}
    34     printf("Yes
    ");
    35     return 0;
    36 }
    View Code

    C. Drazil and Factorial

    题目大意:给出函数F(x)为x的十进制下各位数阶乘的乘积,求最大的y使得F(x)=F(y)并且y中不含有0和1

    思路:应该挺容易想的,首先素数显然只能放在那儿不能动,合数的话尽量拆成较多的数,比如9!可以拆成7!*3!*3!*2!一次类推,总共就2到9一共8个数,除去素数就只要手推几个数这题就出来了

     1 #include<cstdio>
     2 using namespace std;
     3 char ch[1000];
     4 int cnt[100];
     5 int main()
     6 {
     7     int n;
     8     scanf("%d",&n);
     9     scanf("%s",ch+1);
    10     for(int i=1;i<=n;i++)
    11     {
    12         int u=ch[i]-'0';
    13         if(u<=1)continue;
    14         else if(u==4)
    15         {
    16             cnt[2]+=2;
    17             cnt[3]++;
    18