悦然wordpress建站服务,做配资网站,wordpress加音乐,佛山营销网站建设蓝桥杯2023年第十四届省赛真题-平方差 - C语言网 (dotcpp.com) 初步想法#xff0c;x y2 − z2#xff08;yz)(y-z) 即xa*b#xff0c;ayz#xff0c;by-z 2yab 即ab是2的倍数就好了。 即x存在两个因数之和为偶数就能满足条件。 但时间是#xff08;r-l#xff09;*xx y2 − z2yz)(y-z) 即xa*bayzby-z 2yab 即ab是2的倍数就好了。 即x存在两个因数之和为偶数就能满足条件。 但时间是r-l*x数据1e9直接T了 #includebits/stdc.h
using namespace std;
const int N1e510;
mapint,int mp;
int cnt;bool judge(int x)
{for(int i1;ix;i)//找两个因数 {if(x%i!0) continue;int dx/ii;if(d%20||x1)//说明是整数 {return true; } }return false;
}
signed main()
{ios::sync_with_stdio(false);cin.tie(nullptr);int l,r;cinlr; for(int il;ir;i){if(judge(i)) cnt; }coutcnt;return 0;
}
运行结果 进一步分析 根据题意多写几个不难发现奇数似乎都能拆成y2 − z2的形式因此我们从奇偶的角度来找规律。 (这个地方写错了是 那么在这里就可以得出结论辣。想要数字能表示成y2-z2的形式只有两种可能 1.奇数 2.4的倍数 代码
#includebits/stdc.h
using namespace std;
const int N1e510;
int cnt;signed main()
{int l,r;cinlr; for(int il;ir;i){if(i%2) cnt;if(i%40) cnt;}coutcnt;return 0;
} 这一步还不能过属实有点钻牛角尖了。。。。。
但是好在已知一个数x对应的奇数、4的倍数的数的个数是可以算出来的。 #includebits/stdc.h
using namespace std;
const int N1e510;
int cnt;
signed main()
{int l,r;cinlr; int d(l-1)/2;if((l-1)%20) d--;int pl/4;if((l%4)0) p--;cnt(r-1)/2-dr/4-p;coutcnt;return 0;
}