成绩统计
小蓝给学生们组织了一场考试,卷面总分为100 分,每个学生的得分都是一个0 到100 的整数。
如果得分至少是60 分,则称为及格。如果得分至少为85 分,则称为优秀。
请计算及格率和优秀率,用百分数表示,百分号前的部分四舍五入保留整数。输入格式
输入的第一行包含一个整数n,表示考试人数。
接下来n 行,每行包含一个0 至100 的整数,表示一个学生的得分。输出格式
输出两行,每行一个百分数,分别表示及格率和优秀率。
百分号前的部分四舍五入保留整数。
输入样例
7
80
92
56
74
88
100
0
输出样例
71%
43%
#include <iostream>
#include <bits/stdc++.h>
#include <algorithm>
#include <vector>
#include <cmath>
#include <queue>
#include <bitset>
using namespace std;
typedef long long ll;
int main()
{
int n, jige = 0, youxiu = 0;
cin >> n;
int m = n;
while(n --)
{
int a;
cin >> a;
if(a >= 60)
jige ++;
if(a >= 85)
youxiu ++;
}
double sum1 = jige * 1.00 / m * 100;
double sum2 = youxiu * 1.00 / m * 100;
printf("%.0lf%\n%.0lf%\n",sum1, sum2);
return 0;
}
子串分值和
对于一个字符串S ,我们定义S 的分值f (S ) 为S 中出现的不同的字符个数。
例如f (”aba”) = 2, f (”abc”) = 3, f (”aaa”) = 1。
现在给定一个字符串S [0 : n - 1](长度为n),请你计算对于所有S 的非空子串S [i : j](0 ≤ i ≤ j < n), f (S [i:: j]) 的和是多少。输入格式
输入一行包含一个由小写字母组成的字符串S 。
对于所有评测用例,1 ≤ n ≤ 100000。
输出格式
输出一个整数表示答案。
输入样例
ababc
输出样例
28
#include <iostream>
#include<cstring>
using namespace std;
typedef long long ll;
int main()
{
string s;
cin >> s;
ll total = 0;
int a[26];
memset(a,-1,sizeof(a));
a[s[0] - 'a'] = 0;
total += s.size();
for(int i=1;i<s.size();i++)
{
total += (i - a[s[i] - 'a']) * (s.size() - i);
a[s[i] - 'a'] = i;
}
cout << total;
return 0;
}