149 条题解
-
0wyc4662 LV 10 @ 2009-07-19 00:06:36
样例错了,3 10应改为3 100
庆祝双星!!
顶楼下的题解 -
02009-07-18 16:36:52@
将N转化成2 进制,得到的数据看成k进制,接着转化成十进制
program fjkl;
var a:array[1..10]of integer;
s,i,m,n,k:longint;
begin
readln(k,n);
s:=0;
while n0 do
begin
inc(s);
a:=n mod 2;
n:=n div 2;
end;m:=0;
for i:=s downto 1 do
m:=m*k+a[i];
writeln(m);
end. -
02009-07-18 13:51:43@
用二进制的算法太高深了,牛叉
-
02009-07-08 17:52:39@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms
本人RP 10^10^10^10^1000000000000000000^100000000
谢谢合作。。。。 -
02009-07-08 17:49:45@
YYz在楼上
我是预言家
呵呵 -
02009-07-08 14:37:33@
var
a:array[1..50] of integer;
dep:integer;
procedure change(i:integer);
var
tmp,j:integer;
t:array[1..50]of integer;
begin
fillchar(t,sizeof(t),0);
tmp:=i;
dep:=0;
repeat
inc(dep);
t[dep]:=tmp mod 2;
tmp:=tmp div 2;
until tmp=0;
for j:=1 to dep do
a[j]:=t[j];
end;procedure main;
var
i,n,k:integer;
ans:longint;
begin
readln(k,n);
change(n);
ans:=0;
for i:=dep downto 1 do
ans:=ans*k+a[i];
writeln(ans);
end;
begin
main;
end. -
02009-06-14 14:56:40@
先求第N个数最高次r,再加上第N-2^r个数,转化为求第r个数。
用递归实现。 -
02009-06-08 14:10:49@
找规律啦,用位运算算2^i
program p1319;
var k,n,tem,m,i,ans:longint;function work(x:longint):longint;
var i:longint;
begin
work:=1;
for i:=1 to x do work:=work*k;
end;begin
read(k,n);
tem:=n;
while tem>1 do
begin
inc(m);
tem:=tem shr 1;
end;
for i:=0 to m do
if not(odd((n-(1 shl i))div (1 shl i))) then inc(ans,work(i));
writeln(ans)
end. -
02009-06-08 09:05:35@
program p4;
var
k,i,j,n,t,p,h:longint;
f:array [1..1000] of longint;
begin
read(k,n);
f[1]:=1;
f[2]:=k;
j:=3; t:=2;
i:=1;
p:=2;
while j -
02009-05-14 17:15:40@
var k,n,ans,x,r:longint;
begin
readln(k,n);
ans:=0;
x:=1;
while n>0 do
begin
r:=n mod 2;
n:=n div 2;
ans:=ans+r*x;
x:=x*k;
end;
if ans=0 then writeln(1)
else writeln(ans);
end. -
02009-05-03 12:47:30@
program shulie;
var k,n,i,m,t:integer;
a:array[0..9] of real;
sum:real;
procedure findm;
begin
if n=1 then m:=0
else if n -
02009-09-12 17:12:35@
晕,题目有歧义。应该是3^0,3^1,3^0+3^1,3^2,3^0+3^2,
3^1+3^2,3^0+3^1+3^2,…);
还有明明题目上都是N=100,怎么一到测试数据就变成10了呢? -
02009-04-07 15:44:24@
program cyfooo;
var
a:array[0..10000] of integer;
i,j,k,n:longint;
t:double;
begin
readln(k,n);j:=0;
repeat
j:=j+1;
a[j]:=n mod 2;
n:=n div 2;
until n=0;
for i:=1 to 10000 do
if a[i]=1 then t:=t+(exp(ln(k)*(i-1)));
write(trunc(t));
end. -
02009-03-07 20:32:57@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms#include "stdio.h"
int main()
{
unsigned k,n,ans=0,w=1;
scanf("%u%u",&k,&n);
while(n>0)
{
ans+=w*(n%2);
n=n/2;
w*=k;
}
printf("%u",ans);
return 0;
} -
02009-02-14 21:18:03@
C语言:
测试数据3 10,输出应为30.
用itoa函数将n转化为2进制数,再当成k进制数,转化为10进制数.有问题,问问newdeng就知道.
-
02009-01-04 17:01:37@
编译通过...├ 测试数据 01:答案正确... 0ms├ 测试数据 02:答案正确... 0ms├ 测试数据 03:答案正确... 0ms├ 测试数据 04:答案正确... 0ms├ 测试数据 05:答案正确... 0ms├ 测试数据 06:答案正确... 0ms├ 测试数据 07:答案正确... 0ms├ 测试数据 08:答案正确... 0ms├ 测试数据 09:答案正确... 0ms-------------------------Accepted 有效得分:100 有效耗时:0ms
方法其实很简单,1,2,1,231,32,31,2,34.........找到第m个组合,若组合中的元素为a1,a2,a3...ai,那么total:=total+round(exp((ai-1)*ln(n)));累加起来得到的就是答案了;找第m个集合时要用到递归的思想,很简单,一个一维数组搞定,数组开到10呦;
你走了我爱谁? -----上帝的眼泪 -
02008-12-20 17:19:16@
#include
using namespace std;int main() {
int k,n,r,m;
for(cin>>k>>n,m=0,r=1;n;m+=(n&1)*r,n>>=1,r*=k);
return(cout -
02008-11-29 14:03:18@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0msvar
a:array[1..50]of integer;
dep:integer;
procedure change(i:integer);
var
tmp,j:integer;
t:array[1..50]of integer;
begin
fillchar(t,sizeof(t),0);
tmp:=i;
dep:=0;
repeat
inc(dep);
t[dep]:=tmp mod 2;
tmp:=tmp div 2;
until tmp=0;
for j:=1 to dep do
a[j]:=t[j];
end;procedure main;
var
i,n,k:integer;
ans:longint;
begin
readln(k,n);
change(n);
ans:=0;
for i:=dep downto 1 do
ans:=ans*k+a[i];
writeln(ans);
end;
begin
main;
end.Flag Accepted
题号 P1319
类型(?) 数论 / 数值
通过 1862人
提交 3045次
通过率 61%
难度 2提交 讨论 题解
-
02008-11-27 20:11:31@
1次AC
.......
......纪念28AC~~ -
02008-11-13 15:37:30@
2进制!!!
---|---|---|---|---|---|---|---|---|-编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms