CSU 规律题

Description

CSU 规律题_第1张图片

Input

Output

Sample Input

3
2 2 2
2 1 3
10 1000 24

Sample Output

1
2
7

HINT

Source

根据题意,看一个数可以分多少次才可以到达 a和b的 值


#include <iostream>
#include <algorithm>
#include <cstdio>
#include<cmath>
#include <cstring>
#include <cstdlib>
#include <map>
#define inf 0x3f3f3f3f
#define Max 20010
using namespace std;

int main()
{
   int T;
   long long a,b,n,sum=0;
   while(~scanf("%d",&T))
   {
       while(T--)
       {
           scanf("%lld%lld%lld",&n,&a,&b);
           if(a>b)
            swap(a,b);
           sum=pow(2,n);
           long long num=0;
           while(1)
           {
               if(a%sum==0)
               {
                   break;
               }
               else
               {
                   num++;
                   sum/=2;
               }
           }
           printf("%lld\n",num);
       }
   }
}



1535: Pizza voting

Time Limit: 5 Sec   Memory Limit: 128 MB
Submit: 522   Solved: 192
[ Submit][ Status][ Web Board]

Description

CSU 规律题_第2张图片 

Input

 CSU 规律题_第3张图片

Output

 

Sample Input

5 2
500 Margherita
600 Salami
700 Hawai
800 Speciale
900 Doener

Sample Output

YES

HINT

Source

//将每种情况都手写一遍,查找规律
题意是A喜欢能量最少的,B喜欢能量最大的.所以每次A先选能量最大的排除掉,然后B选能量最小的除掉,然后该我聪明的选一个排除,多次循环后,使你选的号码保留到最后.

#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstring>
#include <cstdlib>
using namespace std;

int main()
{
    int n,m;
    char s[1000];
    int a;
    while(~scanf("%d%d",&n,&m))
    {
        for(int i=0;i<n;i++)
        {
            scanf("%d%s",&a,s);
        }
        if(n/3<m&&m<=(n/3+(n-1)/3)+1)
            printf("YES\n");
        else
            printf("NO\n");
    }
    return 0;
}




你可能感兴趣的:(CSU 规律题)