1.[ABC131A] Security
题意:
已知给出一个四位数,如果数字中有连续的数字,就把这个数叫做安全代码,如果该数字是安全代码的话就输出 Bad,反之输出 Good。
说明/提示
约束条件
S S S是仅由半角数字构成长度为4 4 4的字符串
样本扩展1
因为第2个2个2个2个和第3个3个3个3个字是一样的,所以377637763776是很难输入的安全代码。
样本扩展2
因为相同的数字不连续,所以8080808080不是很难输入的安全代码。
求出个十百千位即可。
#include <iostream>
#include <math.h>
#define ll long long
using namespace std;
ll n,g,s,b,q;
int main()
{
cin >> n;
g = n % 10;
s = n / 10 % 10;
b = n / 100 % 10;
q = n / 1000;
if(g == s || s == b || b == q) cout << "Bad";
else cout << "Good";
return 0;
}
2.[ABC131B] Bite Eating
题意翻译
有 N N N 个苹果。苹果 i i i 的“味道”是 L+i−1 L+i-1 L+i−1 。“味道”也有可能是负的。
你可以用一个以上的苹果来制作苹果派。苹果派的“味道”是作为苹果的“味道”的总和。
因为肚子饿了,所以你吃了一个苹果。吃下去的苹果不能作为苹果派的材料。
想要尽量做出与预定的苹果派相同,即用没吃的 N−1 N-1 N−1 个苹果做出的苹果派的“味道”要与用全部 N N N 个苹果做出的苹果派的“味道”的绝对值的差尽可能小。
吃掉选出的最合适苹果,计算以未吃的 N−1 N-1 N−1 个苹果做出的苹果派的“味道”。
另外,可以证明这个值是唯一确定的。
方法:选出绝对值最小的数变为0,然后相加。
#include <iostream>
#include <bits/stdc++.h>
#include <math.h>
#define ll long long
using namespace std;
ll n,m,s,ls[1015],minn,minh;
int main()
{
cin >> n >> m;
for(ll i = 1 ; i <= n ; i++) ls[i] = m + i - 1;
//for(ll i = 1 ; i <= n ; i++) cout << ls[i] << ' ';
minn = ls[n]; minh = n; //cout << minn << '\n';
for(ll i = 1 ; i <= n ; i++)
{
//cout << abs(ls[i]) << ' ' << minn << ' ' << min(minn,abs(ls[i])) << '\n';
if(abs(ls[i]) < abs(minn))
{
//cout << minn << ' ' << abs(ls[i]) << ' ' << i << '\n';
minn = ls[i]; minh = i;
}
}
ls[minh] = 0;
for(ll i = 1 ; i <= n ; i++)
{
s += ls[i];
//cout << ls[i] << ' ';
}
cout << s;
return 0;
}
3.[ABC131C] Anti-Division
给出四个整数 A,B,C 和 D。 查找 A 和 B(含)之间不能被 C 或 D 均分(整除)的整数数。
最大公约数可以使用辗转相除法。
算法基础:辗转相除法_python_ok的博客-CSDN博客
最小公倍数 = a和b的积除以最大公约数(a * b / 最大公约数)
能被a,b整除的数 = 能被a整除的数 + 能被b整除的数 – 能被a和b的最小公倍数整除的数(重复的数)
#include <bits/stdc++.h>
using namespace std;
int mx(int a,int b)
{
int l;
while(b > 0)
{
l = a % b;
a = b;
b = l;
}
return a;
}
int main()
{
long long a,b,c,d;
cin >> a >> b >> c >> d;a--;
long long anj = c * d / mx(c,d);
cout << (b - b / c - b / d + b / anj) - (a - a / c - a / d + a / anj);
return 0;
}
4.[ABC131D] Megalomania
题意翻译
NNN 个任务,完成一个任务需要 AiA_iAi 秒,需要在 BiB_iBi 秒前内完成(可以压线完成,即完成的时间正好是 BiB_iBi )。问是否能完成全部任务,如果能,输出 YesYesYes ,否则输出 NoNoNo 。
比较大小即可。
#include <bits/stdc++.h>
using namespace std;
struct txt
{
int x,y;
}ls[500005];
bool cmp(txt x,txt y)
{
return x.y < y.y;
}
int main()
{
int n; cin >> n;
for(int i = 1 ; i <= n ; i++) cin >> ls[i].x >> ls[i].y;
sort(ls + 1,ls + 1 + n,cmp);
for(int i = 1 ; i <= n ; i++)
{
ls[i].x += ls[i - 1].x;
if(ls[i].x > ls[i].y)
{
cout << "No";
return 0;
}
}
cout << "Yes";
return 0;
}
好了,886~
此文章由洛谷用户zifan2与CSDN用户python_ok所有!