原题链接传送门
题意:
一串项链,线和珍珠可以调位值,问是否珍珠之间的线一样多,一样多的话输出YES
,否则输出NO
。
思路:
如果珍珠数和线数都为0,满足条件;
如果珍珠数为0或线数为0,满足条件;
当珍珠数o<线数l,且l % o == 0
时,满足条件。
AC代码:
#include <bits/stdc++.h>
using namespace std;
int main(){
char s[105];
int l,o; //l表示线数,o表示珍珠数。
l = o = 0;
scanf("%s",s);
int len = strlen(s);
for(int i=0;i<len;i++){
if(s[i] == 'o'){
o ++;
}
else if(s[i] == '-') l ++;
}
if(l == 0 || o == 0){
printf("YES\n");
}
else {
if(o > l){
printf("NO\n");
}
else if(l % o == 0){
printf("YES\n");
}
else printf("NO\n");
}
return 0;
}