13 条题解
-
24
这一道题我用的是 string 类型来做的,先看看思路吧~
- 首先用 sum 为总积分,last 为上一天的积分数
- 先用 getline() 语句截取一整行的字符串到 a 中
- 然后 0 ~ 循环字符个数 - 1,别情写上三个判断语句
- 首先判断如果是 N 没签到就直接把今天的社为零(到明天就是昨天了)
- 然后判断特殊情况如果积分积累到了 5 并且还签到了,那还将 sum 加 5(最高上限)
- 最后判断如果前一天签到了并且前一天的积分大于等于 1,就将 last 加上一并且将总数 sum 加上 last
- 最后输出 sum(总数)即可~
最后,我们的 AC 代码就出现啦!!!
#include <bits/stdc++.h> using namespace std; int main() { int last = 0, sum = 0; string a; getline(cin, a); for (int i = 0; i <= a.size() - 1; i++) { if (a[i] == 'N') last = 0; else if (last == 5 && a[i] == 'Y') sum += last; else if (last >= 1 && a[i] == 'Y' || last == 0 && a[i] == 'Y') { last += 1; sum += last; } } cout << sum; return 0; }
-
5
这一道题我用的是 string 类型来做的,先看看思路吧~
- 首先用 a 为总积分,x 为积分数
- 先用 length() 语句截取一整行的字符串到 a 中
- 然后 0 ~ 循环字符个数 - 1,写上判断语句
- 首先判断如果是 N 没签到就直接把今天的设为1
- 然后判断特殊情况如果积分积累到了 5 并且还签到了,那还将 sum 加 5(最高上限),i 就不 ++
- 最后判断如果前一天签到了并且前一天的积分大于等于 1,就将总数 a 加上 x ,并且将 x 加上一
- 最后输出 a(总数)即可~
#include <iostream> using namespace std; int x=1, a; string n; int main() { cin>>n; for (int i=0;i<n.length();i++) { if (n[i]=='Y') { a+=x; if (x<5) x++; } else x=1; } cout<<a; return 0; }
-
4
这道题并不难~
- 定义一个string类型的变量s,再定义int类型变量num为1,sum(用来统计总积分)为0
- 循环:如果今天签到了,sum增加num(前一天得分加一)分,如果num没有达到上限5,再增加1
- 如果今天没有签到,num重新归一
#include <iostream> using namespace std; int main() { string s; cin >> s; int num=1,sum=0; for (int i=0;i<s.length();i++) { if (s[i]=='Y') { sum+=num; if (num<5) { num++; } } else { num=1; } } cout << sum; return 0; }
已AC
-
-2
#include<iostream>
using namespace std;
int main(){
/* cpp */ string s;//存放字符串 int n = 0; int sum = 0;//开始有0分 int sc = 0; cin>>s;//读入s n = s.length();//获取字符串长度 for(int i=0;i<n;i++){ /* 若签到 */ if(s[i]=='Y'){ if(sc<5){ sc++; } sum+=sc; }//若未签到 else{ sc = 0; } }//使用字符串下标获取是否签到 cout<<sum;//最后输出结果 return 0;
}
-
-3
用字符串或字符数组存放这串字符,接下来从0开始,遍历到这串字符结束,看当前字符为N还是Y;
-
若为N,则让计分器为0;
-
若为Y,则让计分器先自增,即cnt++;(因为前一天没登录的话,计分器为0,当天登录加1分,前一天登录了,则在前一天的分数上加1分)
- 如果计分器分数大于5了,则让计分器等于5,(最大为5)
- 把积分累加到sum中
int i = 0; while (i < s.length()) { if (s[i] == 'N') //如果为N,则计分器更新为0 { cnt = 0; } else //如果为Y,开始计分 { //计分器自增(前一天没登录,计分器为0,当天登录加1分) //前一天登录了,则在前一天的分数上加1分 cnt++; if (cnt > 5) //如果计分器大于5了,让计分器为5 { cnt = 5; } sum += cnt; //把分数累加到sum中 } i++;//下标自增 }
-
- 1
信息
- ID
- 1294
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 4
- 标签
- 递交数
- 1527
- 已通过
- 756
- 上传者