1、
输入样例:OOXXOXXOOO
输出:10
#include <iostream>
#include <cstdio>
#include <cstring>
#define maxn 100
using namespace std;
int main(){
char str[maxn];
scanf("%s",str);
int count = 0;
int score = 0;
for(int i = 0;i < strlen(str);i ++){
if(str[i]=='O'){
count ++;
score += count;
}else{
count = 0;
}
}
printf("%d",score);
return 0;
}
2、
输入样例:C6H5OH
输出:94.108
#include <iostream>
#include <cstdio>
#include <cstring>
#define maxn 100
using namespace std;
double might(char s){
if(s == 'C'){
return 12.01;
}else if(s == 'H'){
return 1.008;
}else if(s == 'O'){
return 16.00;
}else if(s == 'N'){
return 14.01;
}
}
int main(){
char str[maxn];
double sum = 0;
scanf("%s",str);
double m = 0;
for(int i = 0;i < strlen(str);i++){
if(str[i]>='A' && str[i] <='Z'){
if(str[i -1]>='A' && str[i -1] <='Z'&&i > 0 ){
sum += m;
}
m = might(str[i]);
}else{
int k = 0;
for(int j = i; j < strlen(str);j ++){
if(str[j]>='A'&&str[j] <='Z')
break;
else{
k *= 10;
k += (str[i]-'0');
}
}
sum += k*m;
m = 0;
}
if(i + 1 == strlen(str)){
if(str[i -1]>='A' && str[i -1] <='Z'&&i > 0 || i == 0){
sum += m;
}
}
}
printf("%lf",sum);
return 0;
}