本来是一道水题,不过这是我做的第一道BC题,发出来纪念一下~~~~~
题目可以在杭电上交,题号:5944.
主要思路:其实就是暴力求解,不过需要考虑到1,2,4和4,2,1的情况。还有就是一个小技巧:cin>>str+1,可以直接让数字下标从一开始,省去到时候换算。
#include<iostream>
#include<cstring>
using namespace std;
int main()
{
// freopen("in.txt","r",stdin);
ios::sync_with_stdio(false);
int t;
char str[10000];
cin>>t;
while(t--)
{
memset(str,0,sizeof(str));
cin>>str+1;
int len=strlen(str+1);
int count=0;
for(int i=1;i<len;++i){
for(int j=2;j*j*i<len+1;++j)//这里一定要+1,或者改成<=,不然会出错。
if((str[i*j*j]=='x'&&str[i*j]=='r'&&str[i]=='y')||(str[i*j*j]=='y'&&str[i*j]=='r'&&str[i]=='x')){//分别考虑两种情况。
// cout<<j<<" "<<i*j<<" "<<j*i*i<<" aasd"<<endl;
count++;
}
}
cout<<count<<endl;
}
return 0;
}
本文介绍了一道杭电OJ上的编程题(题号5944)的解题思路及代码实现,主要采用暴力求解的方法,并通过巧妙的输入方式简化了程序逻辑。
386

被折叠的 条评论
为什么被折叠?



