问你一个字符串能不能均分成两个相同的字串(长度相同)
思路因为长度相同那么奇数长度直接输出-1
,偶数长度分割一下,然后判断一下是否相等即可
#include
using namespace std;
#define ll long long
#define mod 1000000009
ll ksm(ll a,ll b) {
ll ans = 1;
for(;b;b>>=1LL) {
if(b & 1) ans = ans * a % mod;
a = a * a % mod;
}
return ans;
}
ll lowbit(ll x){return -x & x;}
const int N = 2e6+10;
int a[N];
int main()
{
int n;
cin>>n;
for(int i = 1;i >ch;
if(ch.size() & 1) puts("NO");
else{
string ch1,ch2;
ch1 = ch.substr(0,ch.size()/2);
ch2 = ch.substr(ch.size()/2,ch.size());
if(ch1 == ch2) puts("YES");
else puts("NO");
}
}
return 0;
}
B. Squares and Cubes
题意
找出N范围内所有的平方数和立方数
思路可能很多人想的是直接用公式: n 2 + n 3 − n 6 \sqrt[2]{n}+\sqrt[3]{n}-\sqrt[6]{n} 2n +3n −6n ,但是这样会有精度误差,我也是用这个公式各种向上向下取整来调试,最后还是写了循环扫
我们只用处理一下 i ∗ i < = n i * i =1LL) { if(b & 1) ans = ans * a % mod; a = a * a % mod; } return ans; } ll lowbit(ll x){return -x & x;} const int N = 2e6+10; ll n; map vis; int main() { int t; scanf("%d",&t); while(t--) { vis.clear(); ll p2 = 0,p3 = 0,pt = 0; scanf("%lld",&n); ll ans = 0; for(ll i = 1;i n) break; if(!vis[p2] && p2 n; std::cout t; while(t--) { string s,a; cin>>a>>s; bool fg = true; string b = ""; for(int i = a.size()-1,j = s.size()-1;(i >= 0 || j >= 0);--i,--j) { int k ; if(i