A题Painting the Ribbon题解
其实这是一个经典的数学思维题 ,飘带有N段,每段可以着色,有M种颜色可以选择,另一个人有K次修改颜色的机会,问有没有方式使得飘带在K次修改后都无法变为单一颜色 ?
其实最简单的方法就是1–M颜色以此涂色,这样子各种颜色出现的又多又均衡 ,那么另一个人只能选择最多的一种颜色作为最终颜色,其他颜色全部修改。经过计算可以知道最多的那种颜色会有
N/M向上取整个,所以需要N- 向上取整(N/M)次机会才能变为单一颜色
#include<bits/stdc++.h>
using namespace std;
int main() {
int a;
cin>>a;
for(int i=1;i<=a;i++){
int n,m,k;
int d=1;
int s=0;
cin>>n>>m>>k;
d=n-(n/m);
if(n%m!=0){
d--;
}
if(d<=k){
cout<<"NO";
}
else{
cout<<"YES";
}
cout<<endl;
}
return 0;
}
B - Special Characters
简单题,按题目意思构造即可
#include<bits/stdc++.h>
using namespace std;
int main() {
int a;
cin>>a;
for(int i=1;i<=a;i++){
int b;
cin>>b;
int c=0;
if(b%2==1){
cout<<"NO"<<endl;
}
else{
cout<<"YES"<<endl;
while(c!=b/