contest链接: https://codeforces.com/contest/1091
A题超级简单
int y,b,r;
int main()
{
scanf("%d%d%d",&y,&b,&r);
printf("%d\n",3*(min(min(y+1,r-1),b)));
return 0;
}
B题就是说给出n个A类点,n个B类点。对所有的AB两类点两两匹配(A匹配B)。必定存在某种匹配,使得(Ax+Bx,Ay+By)固定。求之。
样例给出2个A类点(2,5),(-6,4);两个B类点(7,-2),(-1,-3)。显然(-6,4)和(7,-2)匹配,加起来就是(1,2);(2,5)和(-1,-3)匹配也是一样的结果。
还是很简单,ab两类点全部加起来除n就是答案
const int maxn=1e3+10;
int n;
ll x=0,y=0;
int main()
{
scanf("%d",&n);
for (int i=1;i<=2*n;i++)
{
int a,b; scanf("%d%d",&a,&b);
x+=a,y+=b;
}
printf("%lld %lld\n",x/n,y/n);
return 0;
}
C题就是个完完全全的数学题,枚举一次因子就可以了
ll n;
set<ll>ans;
vector<ll>v;
int main()
{
scanf("%lld",&n);
ans.clear();
v.clear();
ans.insert((1+n)*n/2);
ans.insert(1);
for (int i=2;i<=sqrt(n)+1;i++)
if (n%i==0)
{
v.pb(i);
if (i*i!=n) v.pb(n/i);
}
for (auto i:v)
ans.insert(1LL*(n/i)+1LL*(n/i-1)*n/2);
for (auto i:ans) printf("%lld ",i);
puts("");
return 0;
}
D题不是很懂,找规律过的……啥样的规律都有,反正跟n!有关就对了
const int mod=998244353;
int n;
const int maxn=1e6+10;
ll a[maxn],p[maxn];
int main()
{
scanf("%d",&n);
if (n==1)
puts("1");
else if (n==2)
puts("2");
else if (n==3)
puts("9");
else
{
a[1]=a[2]=1,a[3]=3; p[3]=6;
for (int i=4;i<=n;i++)
{
a[i]=(a[i-1]*(i-1)+1)%mod;
p[i]=(p[i-1]*i)%mod;
}
printf("%d\n",(p[n]-a[n]+2*mod)%mod*n%mod);
}
return 0;
}
E想了半天没撸出来,果然还是自己太菜了……
有个类似的题可以看
https://www.cnblogs.com/Itst/p/10051190.html