53 条题解
-
1skyline80386 LV 7 @ 2020-04-04 15:14:08
#include <stdio.h> int main() { int n; scanf("%d", &n); int divider = 1, ans = 0; while (n / divider > 0) { ans += n / divider / 2 + n / divider % 2; divider *= 4; } printf("%d\n", ans); }
选出因数中只有2^0,2^2,2^4……的数,也即除以2^0,2^2,2^4……之后是奇数的数
-
12017-08-25 01:35:18@
#include <iostream> #include <cstdio> #include <cstdlib> #include <cmath> #include <cstring> #include <algorithm> using namespace std; long long aha(long long x) { if (x==0) return 0; else return (x+1)/2+aha(x/4); } int main() { long long n; scanf("%lld",&n); printf("%lld",aha(n)); return 0; }
-
02015-08-03 15:01:26@
#include<iostream>
#include<cstdlib>
using namespace std;
long long int n,f;
long long int calcu(long long int n)
{
if(n<=1) return n;
long long int ans=0;
if(n%2==0) ans+=n/2;
else ans+=n/2+1;
ans+=calcu(n/4);
return ans;
}
int main()
{
cin>>n;
cout<<calcu(n)<<endl;
return 0;
} -
02014-10-31 21:23:48@
我的更好理解一些;
每次只取n的后一半,因为它们的2倍不在a范围内,之后对于n的前一半,这一半的后一半由于乘2与之前重合,舍去,这一半的前一半与n的处理办法相同,递归下去即可。
#include<iostream>
#include<fstream>
#include<cmath>
#include<cstring>
#include<cstdio>
#include<cstdlib>
#include<algorithm>
using namespace std;
long long int n,f;
long long int calcu(long long int n)
{
if(n<=1) return n;
long long int ans=0;
if(n%2==0) ans+=n/2;
else ans+=n/2+1;
ans+=calcu(n/4);
return ans;
}
int main()
{
cin>>n;
cout<<calcu(n)<<endl;
return 0;
} -
02014-09-09 21:26:45@
裸秒了一道
当前位置:/home/记录/详细
个人通过/递交:58/179(32%)
P1385盗窃-月之眼
Accepted
记录信息
评测状态 Accepted
题目 P1385 盗窃-月之眼
递交时间 2014-09-09 21:25:56
代码语言 C++
评测机 上海红茶馆
消耗时间 0 ms
消耗内存 560 KiB
评测时间 2014-09-09 21:25:58
评测结果编译成功
foo.cpp: In function 'int main()':
foo.cpp:16:29: warning: format '%d' expects argument of type 'int*', but argument 2 has type 'long long int*' [-Wformat]测试数据 #0: Accepted, time = 0 ms, mem = 560 KiB, score = 20
测试数据 #1: Accepted, time = 0 ms, mem = 560 KiB, score = 20
测试数据 #2: Accepted, time = 0 ms, mem = 560 KiB, score = 20
测试数据 #3: Accepted, time = 0 ms, mem = 560 KiB, score = 20
测试数据 #4: Accepted, time = 0 ms, mem = 556 KiB, score = 20
Accepted, time = 0 ms, mem = 560 KiB, score = 100
代码#include <iostream>
#include <stdio.h>
#include <string.h>
#include <algorithm>
#include <math.h>using namespace std;
long long n;
int flag;
long long m;
long long s;int main()
{
while( scanf( "%d" , &n ) != EOF )
{
s = 0;
flag = 1;
for( m = 1 ; m <= n ; m *= 2 , flag = -flag )
s += ( n / m ) * flag;
cout << s << endl;
}
return 0;
} -
02014-08-17 12:44:39@
直接在代码框里写 没有任何难度
-
02014-08-09 21:30:59@
真尼玛水比
-
02014-08-09 21:30:33@
var n,sum:longint;
begin
read(n);
while (1<=n) do
begin
sum:=sum+((n+1) div 2);n:=n div 2;n:=n div 2;
end;
write(sum);
end. -
02014-04-07 16:04:59@
water water!!!
program p1385;
var
n:longint;
function f(a:longint):longint;
begin
if a=0 then exit(0);if a=1 then exit(1);
exit((a+1)div 2+f(a div 4));
end;
begin
read(n);
writeln(f(n));
end. -
02013-11-03 10:57:06@
农夫山泉有点甜,竟然交了两遍才过...
var
sum,n:int64;
begin
readln(n);
while n<>0 do
begin
sum:=sum+n-(n div 2);
n:=n div 4;
end;
writeln(sum);
end. -
02013-10-28 19:47:29@
#include<iostream>
using namespace std;
int CC(int x){
if (x==0) return 0;
else return (x+1)/2+CC(x/4);
}
int main()
{int n;
cin>>n;
cout<<CC(n);
return 0;
}前两次编译错误……不知道什么原因……
-
02009-10-29 20:21:54@
数学题啊。。。证明不能,但AC很简单。
先取n中的奇数,再取n中4的倍数中那些数可能的解,也就是出现子问题了.
最后忏悔一下:我抄了代码... -
02009-09-27 13:54:08@
恭贺通过60题
var
n:longint;
out:int64;
begin
readln(n);
while n>1 do begin
out:=out+n div 2;
if odd(n)=true then inc(out);
n:=(n div 2)div 2;
end;
if odd(n)=true then inc(out);
writeln(out);
end. -
02009-09-23 21:29:08@
program p1385;
var i,j,k,n:int64;
function f(x:int64):int64;
begin
if x=1 then exit(1);
if x=0 then exit(0);
exit((x+1)div 2+f(x div 4));
end;
begin
readln(n);
writeln(f(n));
end.数学确实没白学,,这个是最早讲的集合题
-
02009-09-01 14:43:55@
var n:longint;
function xq(s:longint):longint;
begin
if s=0 then exit(0);
xq:=(s+1)div 2+xq(s div 4);
end;
begin
readln(n);
writeln(xq(n));
end.
(jzjsupr)什么乱七八糟的,晕,看我的,包你100分! -
02009-08-31 08:15:13@
好东西啊~
-
02009-08-20 18:57:08@
密码生成方法:设集合A中A={1,2,...,n},B为A子集。对于B中任意一个元素x,2x均不在集合B中。
?什么意思。。。
-
02009-08-19 19:51:41@
庆祝我是第700个AC的
大家看看curimit大牛的,很有用啊 -
02009-08-10 01:45:51@
不知道大家做过这个题目没有:就是2x和3x都不能在集合里面的..这时候就要投影平面用状态压缩dp
下面说下这道题:
读入N,对于1~N中的所有数,考虑表示为2^i*pi的形式(i能多大则多大),则原问题答案就是对于每一个pi,集合{2^0*pi,2^2*pi...}的大小的和。
可以看出,这个答案实际上就是pi的数量加上n/4对应的答案的数量,因此问题可以转化为子问题。 -
02009-08-05 15:54:28@
51..100 :50个
13..25 :13个
4..6 :3个
1 :1个此话怎讲?????
Puzzling.........
Puzzling.........
Puzzling.........
Puzzling.........