Description
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 MBSubmit: 522 Solved: 192
[ Submit][ Status][ Web Board]
Description
Input
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;
}