166 条题解
-
0盗亦有道 LV 8 @ 2009-08-12 19:45:28
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms血与泪!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
去年的noip
就是它 让我痛失一等百感交际
-
02009-08-11 14:27:04@
const hc:array[0..9]of integer=(6,2,5,5,4,5,6,3,7,6);
var i,j,n,t:longint;
function calc(x:longint):longint;
var c:integer;
begin
c:=0;
repeat
c:=c+hc[x mod 10];
x:=x div 10;
until x -
02009-08-09 09:20:09@
我有两种做法:
1.枚举两个加数,我只枚到999就满分了:const
a:array[0..9]of byte=(6,2,5,5,4,5,6,3,7,6);
var
n,i,j,t:longint;
function tot(x:longint):longint;
begin
tot:=0;
repeat
inc(tot,a[x mod 10]);
x:=x div 10;
until x -
02009-08-07 23:41:08@
非打表。。。
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0msconst
q:array[0..9] of longint=(6,2,5,5,4,5,6,3,7,6);
var
a:array[0..1111] of longint;
i,j,sum,n:longint;begin
readln(n); dec(n,4); sum:=0;
for i:=0 to 9 do a[i]:=q[i];
for i:=10 to 1111 do a[i]:=a[i div 10]+a[i mod 10];
for i:=0 to 1111 do
for j:=0 to i do if a[i]+a[j]+a=n then inc(sum);
writeln(sum);
end. -
02009-08-06 21:00:11@
集体cheat啊……
强! -
02009-08-05 18:45:28@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0msconst s:array['0'..'9'] of integer= (6,2,5,5,4,5,6,3,7,6); w:longint=4;var a,b,c,n,r:longint; f:array[0..1000] of longint; tmp:string;begin read(n); r:=0; fillchar(f,sizeof(f),0); for a:=0 to 1000 do begin str(a,tmp); for b:=1 to length(tmp) do f[a]:=f[a]+s[tmp[ b ]]; end; for a:=0 to 1000 do for b:=0 to 1000-a do begin c:=a+b; if f[a]+f[ b ]+f[c]+w=n then r:=r+1; end; write(r);end.
-
02009-08-02 14:44:46@
本殿下提供两个程序
{~~~~~~~~~~~~~~~~~~~~~~~~~~第一个~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
const num:array[0..9] of integer=(6,2,5,5,4,5,6,3,7,6);
var
a:array[0..10000] of integer;
i,j,n,ans:integer;
begin
readln(n);
for i:=0 to 9 do
a[i]:=num[i];for i:=10 to 2000 do
a[i]:=a[i div 10]+a[i mod 10];for i:=0 to 1000 do
for j:=0 to 1000 do
if (a[i]+a[j]+a+4=n) then inc(ans);
writeln(ans);
end.{~~~~~~~~~~~~~~~~~~~~~~~~~~第二个~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
const
a:array[1..26] of integer=(0,0,0,0,0,0,0,0,0,0,0,0,1,2,8,9,6,9,29,39,38,65,88,128,192,319);
var
n:longint;
begin
readln(n);
writeln(a[n]);
end. -
02009-07-31 18:05:32@
program ex1;
const
mat:array[0..9]of longint=(6,2,5,5,4,5,6,3,7,6);
function fun(m:longint):longint;
var t:longint;
begin
t:=0;
while m>0 do
begin
inc(t,mat[m mod 10]);
m:=m div 10;
end;
fun:=t;
end;
var a:array[0..1000] of longint;
n,j,i,ans:longint;
begin
readln(n);
if n -
02009-07-31 14:35:12@
a:0~~1000
b:0~~1000 -
02009-07-31 00:10:52@
......雲......
i,j都要窮舉到1000,害得我交了2次,鬱悶,RP---|-- -
02009-07-26 16:04:07@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0msprogram ex1;
const
mat:array[0..9]of longint=(6,2,5,5,4,5,6,3,7,6);
function fun(m:longint):longint;
var t:longint;
begin
t:=0;
while m>0 do
begin
inc(t,mat[m mod 10]);
m:=m div 10;
end;
fun:=t;
end;
var a:array[0..1000] of longint;
n,j,i,ans:longint;
begin
readln(n);
if n -
02009-07-25 16:10:01@
const
Num:array['0'..'9']of integer=(6,2,5,5,4,5,6,3,7,6);
var
i,j:integer;
ans:integer;
n:integer;
function jisuan(i:integer):integer;
var
st:string;
k:integer;
tot:integer;
begin
tot:=0;
str(i,st);
for k := 1 to length(st) do
inc(tot,Num[st[k]]);
jisuan:=tot;
end;begin
for n := 0 to 24 do begin
ans:=0;
for I := 0 to 1000 do
for j := 0 to 1000 do
if n=(jisuan(i)+jisuan(j)+jisuan(i+j)+4) then inc(ans);
writeln(n,':',ans);
end;
readln;
end.先上面的,记下来(怕超时);
然后const
a:array[1..26] of integer=(0,0,0,0,0,0,0,0,0,0,0,0,1,2,8,9,6,9,29,39,38,65,88,128,192,319);
var
n:longint;
begin
readln(n);
writeln(a[n]);
end.
囧 就是这样 -
02009-07-14 17:25:44@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
谢谢YYz 提供水题 -
02009-07-09 23:01:59@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0msvar a:array[0..60001]of longint; st:string; i,w,n,j,e:longint;
begin
a[0]:=6;
a[1]:=2;
a[2]:=5;
a[3]:=5;
a[4]:=4;
a[5]:=5;
a[6]:=6;
a[7]:=3;
a[8]:=7;
a[9]:=6;
for i:=10 to 6001 do a[i]:=0;
readln(n);
for i:=10 to 6001 do
begin
str(i,st);
e:=length(st);
for j:=1 to e do
a[i]:=a[i]+a[ord(st[j])-48];
end;
w:=0;
for i:=0 to 3000 do for j:=0 to 3000 do
if a[i]+a[j]+a=n-4 then
begin
inc(w);
// writeln(i,'+',j,'=',i+j);
end;
write(w);
end.
数组1000->40
60000->超时
6000->AC -
02009-07-09 18:29:19@
。。范围改了三次
1..100的话只有60分。。
1..500的话有80分。。
1..1000就可以AC了。。
后怕啊。。。要是比赛上遇到那就死的不明不白了。。。 -
02009-07-09 17:41:37@
我不得不说vijos的评测机好的不是一点 我的FP半天没反应,这里100ms左右
这个题,范围开多大,真的不好说,不想算的话,开到10000,打表好了
真的不难啊 我就想不明白我的NOIP2008怎么就挂在这个题上了,直接做第三题,只过了4个点,这个cheat 了三个,结果是传说中的省一国二啊。。。
第一个思路是,穷举火柴棒的数目,不好做,我就放弃了,没想到穷举数值是那么的简单
再做题,多换思路,多做题,NOIP2009努力! -
02009-07-06 20:15:36@
大牛们!!!!!!!!!!!!!!
错了一个点,请指教const
d:array[0..9]of integer=(6,2,5,5,4,5,6,3,7,6);
var
s:array[1..3]of longint;
ans,n:integer;
score:real;
procedure dfs(dep,r,first:integer);
var
i:integer;
begin
if not((dep=3)and(s[1]+s[2]n then continue;
if (dep -
02009-07-06 20:03:47@
var n:longint;
begin
readln(n);
if (n>=0) and (n -
02009-07-01 14:08:51@
编译通过...
├ 测试数据 01:答案正确... 165ms
├ 测试数据 02:答案正确... 181ms
├ 测试数据 03:答案正确... 228ms
├ 测试数据 04:答案正确... 165ms
├ 测试数据 05:答案正确... 181ms
├ 测试数据 06:答案正确... 181ms
├ 测试数据 07:答案正确... 212ms
├ 测试数据 08:答案正确... 196ms
├ 测试数据 09:答案正确... 228ms
├ 测试数据 10:答案正确... 196ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:1933ms
在家电脑上都不能1S通过,没想到puppy速度这么快,耶!
编一个函数来算每个数需要的火柴数,然后用两个变量从0到1000的做,符合条件ans+1,至于能不能过就要看rp了。。。 -
02009-07-07 17:06:37@
考虑的时候别忘了先扣除4根用于“+”“=”的火柴
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms