P14074 [GESP202509 五级] 有趣的数字和 题解 题目描述如果一个正整数的二进制表示包含奇数个 1那么小 A 就会认为这个正整数是有趣的。例如7 的二进制表示为 (111)2​包含 1 的个数为 3 个所以 7 是有趣的。但是 9(1001)2​ 包含 2 个 1所以 9 不是有趣的。给定正整数 l,r请你统计满足 l≤n≤r 的有趣的整数 n 之和。输入格式一行两个正整数 l,r表示给定的正整数。输出格式一行一个正整数表示 l,r 之间有趣的整数之和。输入输出样例输入 #1复制运行3 8输出 #1复制运行19输入 #2复制运行65 36248输出 #2复制运行328505490说明/提示【数据范围】对于 40% 的测试点保证 1≤l≤r≤。对于另外 30% 的测试点保证 l1 并且 r−1其中 k 是大于 1 的正整数。对于所有测试点保证 1≤l≤r≤。【提示】由于本题的数据范围较大整数类型请使用 long long。代码140%分数#include bits/stdc.h using namespace std; bool f(int x){ long long s0; while(x0){ char cx%20; x/2; if(c1){ s; } } if(s%20){ return false; } else{ return true; } } int main(){ long long l,r; cinlr; long long ans0; for(int il;ir;i){ if(f(i)true){ ansi; } } coutans; return 0; }代码270%分数#include bits/stdc.h using namespace std; bool f(int x){ long long s0; while(x0){ sx%2; x/2; } return s%2; } int main() { long long l,r; cinlr; long long ans0; if (r1e4){ for(int il;ir;i){ if (f(i)){ ansi; } } coutans; return 0; } cout(r1)*r/4; return 0; }AC代码100%分数#includebits/stdc.h using namespace std; long long a[1005]{0,24999997500000,99999995000000,224999992500000,399999990000000,624999987500000,899999985000000,1225000052500000,1599999980000000,2025000067500000,2499999975000000,3025000082500000,3599999970000000,4224999967500000,4900000105000000,5624999962500000,6399999960000000,7224999957500000,8100000135000000,9024999952500000,9999999950000000,11024999947500000,12100000165000000,13224999942500000,14399999940000000,15625000187500000,16899999935000000,18225000202500000,19600000210000000,21024999927500000,22499999925000000,24024999922500000,25599999920000000,27225000247500000,28899999915000000,30624999912500000,32400000270000000,34225000277500000,36099999905000000,38024999902500000,39999999900000000,42025000307500000,44099999895000000,46225000322500000,48400000330000000,50624999887500000,52899999885000000,55225000352500000,57599999880000000,60025000367500000,62500000375000000,65024999872500000,67599999870000000,70225000397500000,72900000405000000,75625000412500000,78400000420000000,81225000427500000,84099999855000000,87025000442500000,89999999850000000,93025000457500000,96099999845000000,99224999842500000,102399999840000000,105624999837500000,108900000495000000,112224999832500000,115599999830000000,119025000517500000,122499999825000000,126025000532500000,129600000540000000,133224999817500000,136900000555000000,140624999812500000,144399999810000000,148224999807500000,152099999805000000,156025000592500000,159999999800000000,164024999797500000,168100000615000000,172225000622500000,176399999790000000,180625000637500000,184900000645000000,189224999782500000,193600000660000000,198024999777500000,202499999775000000,207025000682500000,211599999770000000,216225000697500000,220900000705000000,225625000712500000,230399999760000000,235225000727500000,240100000735000000,245025000742500000,250000000750000000,255025000757500000,260099999745000000,265225000772500000}; long long c(long long n){ long long ans0; long long ln/10000000*10000000; for(long long il1;in;i){ long long z0,vi; while(v){ if(v1) z; v1; } if(z1) ansi; } return ansa[n/10000000]; } int main(){ long long n,m; cinnm; coutc(m)-c(n-1); return 0; }