166 条题解
-
0SecretAgent LV 10 @ 2009-06-29 14:08:23
根据事实来看,只要2层循环就可以了,范围是1000,
可是我真的不知道如何证明,
也不知道1000算出来的是不是对的.所以还是把每个火柴棒能堆出来的数统枚举出来.
然后枚举火柴棒数,这样比较保险,就是编起来好麻烦,用了5层循环啊.编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms -
02009-06-22 11:21:14@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms预处理+枚举
本是水题 可是当年用搜索只过了3个点……
const
c:array[0..9] of longint=(6,2,5,5,4,5,6,3,7,6);
var n,k,i,j,count:longint;
a:array[0..11111]of longint;
begin
readln(n);
n:=n-4;
count:=0;for i:=0 to 9 do a[i]:=c[i];
for i:=10 to 1111 do
a[i]:=a[i mod 10]+a[i div 10];for k:=0 to 1111 do
for i:=0 to k do
begin
j:=k-i;
if a[i]+a[j]+a[k]=n then inc (count);
end;
writeln(count);
end. -
02009-06-07 23:23:40@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms#include
using namespace std;
int match[]={6,2,5,5,4,5,6,3,7,6};
inline int getnum(int num)
{
if(num==0) return match[0];
int ret=0;
int n=num;
while(n>0)
{
ret+=match[n%10];
n=n/10;
}
return ret;
}
int main()
{
int n;
int c=0;
cin>>n;
n-=4;
for(int a=0;a=n) continue;
for(int b=a;b=n) continue;
if(na+nb+getnum(a+b)==n)
{
c+=a==b?1:2;
}
}
}
cout -
02009-06-05 12:08:32@
水啊水啊,早知道昨年我就不做第4道(第四题我没得到分),我就做这道题,我现在就一等了...55555
-
02009-05-24 19:23:04@
囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧
-
02009-05-09 21:22:09@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms
#include
using namespace std;
int sz,sz2,sz3,a[10]={6,2,5,5,4,5,6,3,7,6};
void fl(int i,int j,int c)
{
int h,k,l;
h=i;k=j;l=c;
sz=0;sz2=0;sz3=0;
if(h==0)sz=6;if(k==0)sz2=6;if(l==0)sz3=6;
while(h!=0){sz+=a[h%10];h=h/10;}
while(k!=0){sz2+=a[k%10];k=k/10;}
while(l!=0){sz3+=a[l%10];l=l/10;}
}
int main()
{
int i,j,n,m=0,m1=0,c,b[1001]={0};
cin>>n;
n=n-4;
for(i=0;i -
02009-04-22 17:17:16@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms
NOIP 2008 ,我败得太冤了!!
循环 0--1000 ,本来好好的,却不知怎么想的改成了 0---|400 = =
我想大声的说一个字 “ 太阳 ”! -
02009-04-16 17:00:00@
program aaa;
var
u:array[0..10000] of integer;
i,j,sum,n:integer;
begin
read(n);
sum:=0;
u[0]:=6;
u[1]:=2;u[2]:=5;u[3]:=5;
u[4]:=4;u[5]:=5;u[6]:=6;
u[7]:=3;u[8]:=7;u[9]:=6;
for i:=10 to 99 do u[i]:=u[i mod 10]+u[i div 10];
for i:=100 to 999 do u[i]:=u[i mod 10]+u[i div 10];
for i:=1000 to 2000 do u[i]:=u[i mod 10]+u[i div 10];
for i:=0 to 1000 do
for j:=0 to 1000 do
if (u[i]+u[j]+u+4=n) then inc(sum);
write(sum);
end. -
02009-04-06 13:09:45@
#include "stdio.h"
int main()
{
int i,j,n,ans,s[3000]={6,2,5,5,4,5,6,3,7,6};
scanf("%d",&n);
if(n>=0&&n -
02009-03-23 13:41:03@
const num:array[0..9] of longint=(6,2,5,5,4,5,6,3,7,6);
var n,n1,n2,n3,i,j,a,b,c,res:longint;
begin
res:=0;
readln(n);
n:=n-4;
for i:=0 to 999 do
for j:= 0 to 999 do
begin
a:=i;b:=j;c:=a+b;n1:=0;n2:=0;n3:=0;
if a>99 then begin
n1:=num[a div 100];
a:=a mod 100;n1:=n1+num[a div 10]+num[a mod 10]end
else begin
if a>9 then begin n1:=n1+num[a div 10];a:=a mod 10;end;
n1:=n1+num[a];
end;
if b>99 then begin
n2:=num[b div 100];
b:=b mod 100;n2:=n2+num[b div 10]+num[b mod 10]end
else begin
if b>9 then begin n2:=n2+num[b div 10];b:=b mod 10;end;
n2:=n2+num;
end;
if c>99 then begin
n3:=num[c div 100];
c:=c mod 100;n3:=n3+num[c div 10]+num[c mod 10]end
else begin
if c>9 then begin n3:=n3+num[c div 10];c:=c mod 10;end;
n3:=n3+num[c];
end;
if n1+n2+n3=n then res:=res+1;
end;
writeln(res);
end. -
02009-03-14 23:18:23@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms#include "stdio.h"
int main()
{
int i,j,n,ans,s[3000]={6,2,5,5,4,5,6,3,7,6};
scanf("%d",&n);
if(n>=0&&n -
02009-03-04 12:46:08@
#include
int main (){
int n;
scanf ("%d",&n);
if (n>=0&&n -
02009-03-02 22:18:33@
提高搜索效率,40分
降低搜索效率,AC
真他妈搞笑 -
02009-02-24 21:33:01@
Program p1496;
Const
f:array[0..9]of Longint=(6,2,5,5,4,5,6,3,7,6);
Var
a:array[0..4000]of Longint;
b:array[4..24]of Longint; {交表数据存储数组}
i,j,n,m,s:Longint;
k:Longint; {交表用变量}
Begin
For i:=0 to 9 do a[i]:=f[i];
For i:=10 to 2000 do a[i]:=a[i mod 10]+a[i div 10];{assign(output,'p1496.out');
rewrite(output);
For k:=4 to 24 do
For i:=0 to 999 do
For j:=0 to 999 do
If a[i]+a[j]+a+4=k then inc(b[k]);
Writeln('Program p1496;');
Writeln('Const');
Write(' f:array[4..24]of Longint=(');
For i:=4 to 23 do Write(b[i],',');
Writeln(b[24],');');
Writeln('Var');
Writeln(' n:Longint;');
Writeln('Begin');
Writeln(' Readln(n);');
Writeln(' Writeln(f[n]);');
Writeln('End.');
close(output);}{交表程序段}Readln(n);
For i:=0 to 999 do
For j:=0 to 999 do
If a[i]+a[j]+a+4=n then inc(s);
Writeln(s);
End.
{无优化程序段}
把交表程序段的大括号去掉,加在无优化程序段后运行,即一个'p1496.out'的交表程序! -
02009-02-21 20:57:39@
苦啊!!!!!!!!!!
-
02009-02-11 19:57:38@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms交了三次……
今天才知道括号还分中文 英文的…… -
02009-02-06 15:11:55@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms
太简单了u[0]:=6;
u[1]:=2;u[2]:=5;u[3]:=5;
u[4]:=4;u[5]:=5;u[6]:=6;
u[7]:=3;u[8]:=7;u[9]:=6;
for i:=10 to 99 do u[i]:=u[i mod 10]+u[i div 10];
for i:=100 to 999 do u[i]:=u[i mod 10]+u[i div 10];
for i:=1000 to 2000 do u[i]:=u[i mod 10]+u[i div 10];
下面枚举
for i:=0 to 1000 do
for j:=0 to 1000 do
if (u[i]+u[j]+u+4=n) then inc(sum);
电脑算岂不是很简单,3分钟写完,一次AC -
02009-02-06 13:38:33@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms楼下的~~
我比你更短。
我还是小学生哦。~ -
02009-02-05 20:29:02@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0msprogram Project1;
const num:array[0..9] of longint=(6,2,5,5,4,5,6,3,7,6);
var n,n1,n2,n3,i,j,a,b,c,res:longint;
begin
res:=0;
readln(n);
n:=n-4;
for i:=0 to 999 do
for j:= 0 to 999 do
begin
a:=i;b:=j;c:=a+b;n1:=0;n2:=0;n3:=0;
if a>99 then begin
n1:=num[a div 100];
a:=a mod 100;n1:=n1+num[a div 10]+num[a mod 10]end
else begin
if a>9 then begin n1:=n1+num[a div 10];a:=a mod 10;end;
n1:=n1+num[a];
end;
if b>99 then begin
n2:=num[b div 100];
b:=b mod 100;n2:=n2+num[b div 10]+num[b mod 10]end
else begin
if b>9 then begin n2:=n2+num[b div 10];b:=b mod 10;end;
n2:=n2+num;
end;
if c>99 then begin
n3:=num[c div 100];
c:=c mod 100;n3:=n3+num[c div 10]+num[c mod 10]end
else begin
if c>9 then begin n3:=n3+num[c div 10];c:=c mod 10;end;
n3:=n3+num[c];
end;
if n1+n2+n3=n then res:=res+1;
end;
writeln(res);
end. -
02009-02-05 10:14:47@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 9ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:9ms考试一去不复返`