2020年牛客OI普及第四场
> 题解:
时间:
1.先将给的几点几分转化为分
2.加上三小时30分钟后得到总的分钟数t
3.最后的点数就是t/60,但是由于是24小时的时间制度,所以还要取余24;最后得到的分钟数就是t%60
4.输出两位数,如果前面没有数就补上0
#include <bits/stdc++.h>
using namespace std;
int main()
{
int h, m;
scanf("%d:%d", &h, &m);
m = h * 60 + m;
m += 3 * 60 + 30;
m %= 24 * 60;
h = m / 60, m = m % 60;
printf("%02d:%02d\n", h, m);
return 0;
}
石子:
发现只有当石子只有一堆并且石子的数量是偶数的时候Alice才是必胜的
其他情况由于bob和Alice都是无比聪明的,所以都会选择对自己最有利的方案,无论Alice怎么选,Bob都会做出最佳的选择: 如果石子堆中有偶数的,那么bob就在偶数堆中抽去奇数张石子,那么偶数减去奇数就是得到奇数,如果只有奇数堆,那么就选奇数推中某一个整堆的石子,那么就可以让剩下的石子堆都是奇数,这样偶数堆不断减少,奇数堆不断增加,所以最后bob赢
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n;
while (~scanf("%d", &n))
{
int d;
for (int i = 1; i <= n; i++)
{
scanf("%d", &d);
}
if (n == 1 && d % 2 == 0)
puts("YES");
else
puts("NO");
}
return 0;
卡片:
#include<iostream>
#include<algorithm>
using namespace std;
typedef long long ll;//因为可能b*n可能会达到1e12,所以要开longlong
ll gcd(ll a,ll b)
{
if(b==0)return a;
return gcd(b,a%b);
}
ll lcm(ll a,ll b)
{
ll ans=ll(a*b)/gcd(a,b);
return ans;
}
int main()
{
ll a,m,b,n;
cin>>a>>m>>b>>n;
ll x=lcm(a,b*n);
cout<<x/a+x/b-x/lcm(a,b)<<endl;
return 0;
}