首页 > 代码库 > BestCoder Round #89 1001 Fxx and string

BestCoder Round #89 1001 Fxx and string

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5944

分析:

竟然 i,j,k成等比数列,即i*k = j*j,还要满足 j|i or j|k。

不防设:

j = i*j;

k = i*j*j,就满足那两个条件了,然后遍历这两个条件。

 1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 #include <algorithm> 5  6 using namespace std; 7  8 int main() 9 {10     int t;11     cin>>t;12     while(t--) {13 14         char s[10000+5];15         scanf("%s",s+1);16         int len = strlen(s+1);17         int ans = 0;18         for(int i=1;i<=len;i++) {19             for(int j=2;j*j*i<=len;j++) {20                 int J = i*j,k=i*j*j;21                 if(s[i]==y&&s[J]==r&&s[k]==x) ans++;22                 else if(s[i]==x&&s[J]==r&&s[k]==y) ans++;23 24             }25         }26         cout<<ans<<endl;27 28     }29     return 0;30 }

 

BestCoder Round #89 1001 Fxx and string