CSDN竞赛第56期题解

CSDN竞赛第56期题解

1、题目名称:因数-数字游戏

小Q的柠檬汁做完了。 掏出了自己的数字卡牌。 想要和别人做数字游戏。 可是她又不想要输掉游戏。 她制定好规则,每
次每个人只能把这个牌换成它的因子的某个牌。 但是这个因子不能是1或者整数本身。 现在给出整数n。 两个人开始做游
戏,先手在最优策略状态下能否必胜。

int solution(long int n){
    
    
int result;
// TODO:
long long cnt = 0;
for(long long i=2;i*i<=n;i++){
    
    
if(n%i==0){
    
    
while(n%i==0){
    
    
n/=i;
cnt++;
}
}
}
if(n>1) cnt++;
if(cnt==0) return 1;
if(cnt==2) return 2;
return 1;
}

2、题目名称:津津的储蓄计划

津津的零花钱一直都是自己管理。每个月的月初妈妈给津津 300 元钱,津津会预算这个月的花销,并且总能做到实际花销
和预算的相同。 为了让津津学习如何储蓄,妈妈提出,津津可以随时把整百的钱存在她那里,到了年末她会加上 20% 还
给津津。因此津津制定了一个储蓄计划:每个月的月初,在得到妈妈给的零花钱后,如果她预计到这个月的月末手中还会
有多于 100 元或恰好 100 元,她就会把整百的钱存在妈妈那里,剩余的钱留在自己手中。 例如 11 月初津津手中还有
83 元,妈妈给了津津 300 元。津津预计 11 月的花销是 180 元,那么她就会在妈妈那里存 200 元,自己留下 183 元。
到了 11 月月末,津津手中会剩下 3 元钱。 津津发现这个储蓄计划的主要风险是,存在妈妈那里的钱在年末之前不能取
出。有可能在某个月的月初,津津手中的钱加上这个月妈妈给的钱,不够这个月的原定预算。如果出现这种情况,津津将
不得不在这个月省吃俭用,压缩预算。 现在请你根据2004年1月到12月每个月津津的预算,判断会不会出现这种情况。
如果不会,计算到2004年年末,妈妈将津津平常存的钱加上20%还给津津之后,津津手中会有多少钱。

int i,bu,su=0,o=0;
double de=0;
for(int i=1;i<13;i++){
    
    
scanf("%d",&bu);
su=su+300-bu;
if(su>0&&su<100) continue;
if(su>=100){
    
    
o=1;
de+=su/100;
su%=100;
continue;
}
if(su<0){
    
    
o=0;
printf("-%d",i);
break;
}
}
if(o==1){
    
    
printf("%.0lf",de*120+su);
}

3、题目名称:一维数组的最大子数组和

cin>>n;
int st=0,ed=0;
ll mx = -1e15;
ll s = 0;
int start=0;
for(int i=0;i<n;i++){
    
    
cin>>a[i];
}
for(int i=0;i<n;i++){
    
    
s+=a[i];
if(s>mx){
    
    
mx=s;
st=start;
ed=i;
if(s<0){
    
    
s=0;
start=i+1;
}
}
printf("%d %d\n",st,ed);

4、题目名称:莫名其妙的键盘

有一个神奇的键盘,你可以用它输入a到z的字符,然而每当你输入一个元音字母(a,e,i,o,u其中之一)的时候,已输入的字
符串会发生一次反转! 比方说,当前输入了tw,此时再输入一个o,此时屏幕上的字符串two会反转成owt。 现给出一个
字符串,若用该键盘输入,有多少种方法可以得到?

bool ck(char ch){
    
    
return ch=='a'||ch=='e'||ch=='i'||ch=='o'||ch=='u';
}
int dfs(string s){
    
    
if((int)s.size()==1) return 1;
int t = 0;
if(ck(s[0])){
    
    
string tmp = s.substr(1);
reverse(tmp.begin(),tmp.end());
t+=dfs(tmp);
}
if(!ck(s.back())){
    
    
t+=dfs(s.substr(0,(int)s.size()-1));
}
return t;
}
int main(){
    
    
string s;cin>>s;
cout<<dfs(s);
}

猜你喜欢

转载自blog.csdn.net/weixin_45750972/article/details/131004930