#include <stdio.h> #include <string.h> int main() { char s[8000]={0}; gets(s); long long i,c=0,ch=0,chn=0; while(s[i]) { if(s[i]=='C') c++; else if(s[i]=='H') ch=ch+c; else if(s[i]=='N') chn=chn+ch; i++; } printf("%lld",chn); return 0; } /*#include <stdio.h> #include <string.h> int main() { char s[8000]; gets(s); int i,j,k,siz=strlen(s),sum=0; for(i=0;i<siz;i++) { for(j=i;j<siz;j++) { for(k=j;k<siz;k++) { if(s[i]=='C'&&s[j]=='H'&&s[k]=='N') { sum++; } } } } printf("%d",sum); return 0; }*/上面的方法简单且普适,下面的方法时间长且次数多的时候不能普适
ch的个数其实和前面出现的c的个数有关,chn的个数和n之前ch的个数有关。