暑期提高训练赛二(图形规律,欧拉函数,异或)

hdu6330

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int n;
    char s[100][100];
    scanf("%d",&n);
    while(n--)
    {
        int a,b,c;
        int i,j,k;
        scanf("%d%d%d",&a,&b,&c);
       memset(s,'.',sizeof(s));
       for(i=0;i<2*b;i++)
       {
           for(j=2*b-i;j<2*(a+b)+1-i;j++)
           {
               if(i%2==0)
               {
                   if(j%2==0)
                  s[i][j]='+';
                   else
                    s[i][j]='-';
               }
               else
               {
                   if(j%2==1)
                    s[i][j]='/';
               }
           }
       }
       for(i=2*b;i<2*(b+c)+1;i++)
       {
           for(j=0;j<2*a+1;j++)
           {
              if(i%2==0)
               {
                   if(j%2==0)
                  s[i][j]='+';
                   else
                    s[i][j]='-';
               }
               else
               {
                   if(j%2==0)
                    s[i][j]='|';
               }
           }
       }
       for(i=2*(a+b);i>=2*a+1;i--)
       {
           for(j=2*(a+b)-i;j<2*(b+c)-2*b+(2*a+2*b-i)+1;j++)
           {
                 if(i%2==0)
               {
                   if(j%2==0)
                  s[j][i]='+';
                   else
                    s[j][i]='|';
               }
               else
               {
                   if(j%2==1)
                    s[j][i]='/';
               }
           }
       }
       for(i=0;i<2*(b+c)+1;i++)
       {
           for(j=0;j<2*(a+b)+1;j++)
           {
               printf("%c",s[i][j]);
           }
           printf("\n");
       }
    }
    return 0;
}
二维数组,分别从正面、上面和侧面来输入

还有memset的用法

hdu6322

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int n;
    scanf("%d",&n);
    while(n--)
    {
        int x;
        scanf("%d",&x);
        if(x==1)
            printf("5\n");
        else
            printf("%d\n",x+5);
    }
    return 0;
}

困在题意好久,先要理解互质的概念,就是公因子只有1,除素数外都是合数

1既不是素数也不是合数

2是最小的素数

此题想要找的就是第k小的

f(n质数)=(比n小并且与n互质的数的个数m)m若是合数,则为第k个

给出k

求出n

f(2)=1     1

f(3)=1 2   2

f(4)=1 3   2

f(5)=1 2 3 4   4(第一个合数)

f(6)=1 5  2

f(7)=1 2 3 4 5 6    6(第二个合数)

hdu6324

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int n;
    while(~scanf("%d",&n))
    {
    while(n--)
    {
       int x;
       scanf("%d",&x);
       int sum=0,w;
       scanf("%d",&w);
       sum=w;
      for(int i=1;i<x;i++)
      {
          scanf("%d",&w);
          sum=sum^w;
      }
      int m,n;
      for(int i=0;i<x-1;i++)
      {
          scanf("%d%d",&m,&n);
      }
      if(sum==0)
        printf("D\n");
      else
        printf("Q\n");
    }
    }
    return 0;
}

其实是一道陷阱题

Q先拿

如若总分最后不为0

Q一定赢

因为奇数

猜你喜欢

转载自blog.csdn.net/qq_42232118/article/details/81393228
今日推荐