337 条题解
- 
  0sjynoip LV 7 @ 2009-03-17 21:25:08 交了5次才AC 太不容易了,开始数组里存一位数,最后一个数据超时,后来改成4位数………………………… program p1040; 
 var a,b:array[-5..10000] of longint;
 c:array[-5..100000000] of longint;
 ch:ansistring;
 l1,l2,m,k:longint;
 procedure goin;
 var l,min,i,j:longint; s:string;
 begin
 readln(ch); s:='';min:=10000;
 l1:=length(ch);
 for i:=l1 downto 1 do
 begin
 if length(s)=100 then write('0',c[m]) else
 if c[m]>=10 then write('00',c[m]) else
 if c[m]>=1 then write('000',c[m]) else
 write('0000');
 end;
 writeln;
 end.
- 
  0@ 2009-03-03 23:16:58编译通过... 
 ├ 测试数据 01:答案正确... 0ms
 ├ 测试数据 02:答案正确... 0ms
 ├ 测试数据 03:答案正确... 0ms
 ├ 测试数据 04:答案正确... 0ms
 ---|---|---|---|---|---|---|---|-
 Accepted 有效得分:100 有效耗时:0ms10000位压位,一次AC,秒杀…… #include "stdio.h" 
 #include "string.h"
 int main()
 { char a[10005],b[10005];
 int x[10005]={0},y[10005]={0},s[20015]={0},i,j,n,m,d=0,t=0,t1=0,len;
 scanf("%s%s",a,b);
 n=strlen(a);
 m=strlen(b);
 for(i=n-4;i>=0;i-=4)
 x[t++]=(a[i]-'0')*1000+(a-'0')*100+(a-'0')*10+(a-'0')*1;
 if(n-t*4==3)
 x[t]=(a[0]-'0')*100+(a[1]-'0')*10+(a[2]-'0')*1;
 else
 if(n-t*4==2)
 x[t]=(a[0]-'0')*10+(a[1]-'0')*1;
 else
 if(n-t*4==1)
 x[t]=a[0]-'0';
 for(j=m-4;j>=0;j-=4)
 y[t1++]=(b[j]-'0')*1000+(b[j+1]-'0')*100+(b[j+2]-'0')*10+(b[j+3]-'0')*1;
 if(m-t*4==3)
 y[t1]=(b[0]-'0')*100+(b[1]-'0')*10+(b[2]-'0')*1;
 else
 if(m-t*4==2)
 y[t1]=(b[0]-'0')*10+(b[1]-'0')*1;
 else
 if(m-t*4==1)
 y[t1]=b[0]-'0';
 for(i=0;i=0;i--,t1++)
 if(b[i]!=0)
 break;
 for(i=len;i>=0;i--)
 {
 if(i==len)
 printf("%d",s[i]);
 else
 printf("%.4d",s[i]);
 }
 return 0;
 }
- 
  0@ 2009-11-13 15:32:13type arra=array[-3..10000]of longint; 
 var a,b,c:arra;
 m,n,next,l1,l2,l3:longint;
 procedure init(var m:arra;var lo:longint);
 var k:array[-4..10000]of char;
 q:array[-3..10000]of longint;
 l,i,j,z,p:longint;
 s:string;
 begin
 l:=0;
 fillchar(m,sizeof(m),0);
 while not(eoln) do
 begin
 inc(l);
 read(k[l]);
 end;
 for i:=-4 to 0 do k[i]:='0';
 for i:=1 to (l div 3)+1 do
 begin
 s:='000';
 z:=1;
 for j:=l-i*3+1 to l-(i-1)*3 do
 begin
 s[z]:=k[j];
 inc(z);
 end;
 val(s,q[i]);
 end;
 readln;
 lo:=(l div 3)+1;
 m:=q;
 end;
 procedure multiplied(a,b:arra;l1,l2:longint);
 var i,j:longint;
 s:string;
 begin
 l3:=l1+l2;
 next:=0;
 fillchar(c,sizeof(c),0);
 for i:=1 to l1 do
 for j:=1 to l2 do
 begin
 c:=a[i]*b[j]+c;
 if c>=1000 then
 begin
 c:=c+c div 1000;
 c:=c mod 1000;
 if i+j>l3 then inc(l3);
 end;
 end;
 while c[l3]=0 do dec(l3);
 write(c[l3]);
 for i:=l3-1 downto 1 do
 begin
 str(c[i],s);
 while length(s)
- 
  0@ 2009-02-05 21:53:36高精 压位啊 
- 
  0@ 2009-02-05 21:23:06测试数据怎么大的题也能审核通过???!!! 
- 
  0@ 2009-02-04 15:14:58修改一下下就行了,同学也是这样做,为什么我偏偏错了? 
 var i,j,l1,l2,m,g:longint;
 s1,s2:ansistring;
 a,b:array[0..500] of integer;
 begin
 readln(s1);
 readln(s2);
 l1:=length(s1); l2:=length(s2);
 for i:=1 to l1 do val(s1[i],a[i],g);
 for i:=1 to l2 do val(s2[i],b[i],g);
 for i:=1 to l1 do
 for j:=1 to 500 do
 begin
 m:=a[i]*b[j]+g;
 a[i]:=m mod 10;
 g:=m div 10;
 end;
 j:=1000;
 while a[j]=0 do j:=j-1;
 for i:=1 to j do write(a[i]);
 end.
- 
  0@ 2009-01-28 18:51:51原来以为是自己高精度写错了 
 结果果然是自己高精度写错了
 现在竟然还是不知道自己怎么写错的
 可是自己的那套写法写了很多题目都没有问题
 我只想说……faint
- 
  0@ 2009-01-26 22:24:07#include 
 #include
 char str1[10001],str2[10001];
 long len1,len2,alen,blen,clen;
 long a[3340],b[3340],c[6680];
 long i,j,k,n,m;
 long s,t;
 int main(){
 gets(str1);gets(str2);
 alen=0;
 len1=strlen(str1);
 for (i=len1-1;i>=0;i=s-1){
 s=i-2; t=i;
 if (s
- 
  0@ 2009-01-24 18:05:36水题……囧了……多打了个0……囧了4次0分。 
 看本人的100000000进制数!
 {——————————————————————————————————}编译通过... 
 ├ 测试数据 01:答案正确... 0ms
 ├ 测试数据 02:答案正确... 0ms
 ├ 测试数据 03:答案正确... 0ms
 ├ 测试数据 04:答案正确... 0ms
 ---|---|---|---|---|---|---|---|-
 Accepted 有效得分:100 有效耗时:0msvar 
 s1,s2:ansistring;
 len,l1,l2,i,j:longint;
 a,b,c:array[0..20000]of qword;
 begin
 fillchar(a,sizeof(a),0);
 fillchar(b,sizeof(b),0);
 fillchar(c,sizeof(c),0);
 readln(s1);
 readln(s2);
 l1:=length(s1);
 l2:=length(s2);
 for i:=1 to l1 do
 begin
 j:=(l1-i) div 8+1;
 a[j]:=a[j]*10+ord(s1[i])-48;
 end;
 for i:=1 to l2 do
 begin
 j:=(l2-i) div 8+1;
 b[j]:=b[j]*10+ord(s2[i])-48;
 end;
 l1:=l1 div 8+1;
 l2:=l2 div 8+1;
 len:=l1+l2;
 for i:=1 to l1 do
 for j:=1 to l2 do
 c:=a[i]*b[j]+c;
 for i:=2 to len do
 begin
 c[i]:=c[i]+c div 100000000;
 c:=c mod 100000000;
 end;
 while c[len+1]>0 do inc(len);
 while c[len]=0 do dec(len);
 write(c[len]);
 for i:=len-1 downto 1 do
 write(c[i] div 10000000,
 (c[i] div 1000000) mod 10,
 (c[i] div 100000) mod 10,
 (c[i] div 10000) mod 10,
 (c[i] div 1000) mod 10,
 (c[i] div 100) mod 10,
 (c[i] div 10) mod 10,
 c[i] mod 10);
 end.Flag Accepted 
 题号 P1040
 类型(?) 数论 / 数值
 通过 2236人
 提交 13959次
 通过率 16%
 难度 3提交 讨论 题解 
- 
  0@ 2009-01-17 10:56:55做完这题我好恶心…… 
- 
  0@ 2008-12-21 14:15:57编译通过... 
 ├ 测试数据 01:答案正确... 0ms
 ├ 测试数据 02:答案正确... 0ms
 ├ 测试数据 03:答案正确... 0ms
 ├ 测试数据 04:答案错误...
 ├ Hint: WA ├ 标准行输出
 ├ 错误行输出
 ---|---|---|---|---|---|---|---|-program xaq; 
 type
 atype=array[0..100000]of integer;
 var
 a,b,c:atype;
 s:ansistring;
 len1,len2,i,j,k:integer;
 begin
 readln(s);
 len1:=length(s);
 for i:=0 to len1-1 do
 a[len1-i-1]:=ord(s)-48;
 readln(s);
 len2:=length(s);
 for i:=0 to len2-1 do
 b[len2-i-1]:=ord(s)-48;
 for i:=len1-1 downto 0 do
 begin
 for j:=len2-1 downto 0 do
 c:=c+a[i]*b[j];
 end;
 k:=len1+len2-1;
 for i:=0 to k-1 do
 begin
 c:=c+c[i]div 10;
 c[i]:=c[i] mod 10;
 end;
 if c[k]0 then k:=k+1;
 for i:=k-1 downto 0 do write(c[i]);
 end.哪里错了????????????????????????????????? 
- 
  0@ 2008-12-21 13:47:18编译通过... 
 ├ 测试数据 01:答案正确... 0ms
 ├ 测试数据 02:答案正确... 0ms
 ├ 测试数据 03:答案正确... 0ms
 ├ 测试数据 04:答案正确... 0ms
 ---|---|---|---|---|---|---|---|-
 Accepted 有效得分:100 有效耗时:0msWa了怎么多次,原来因为ansistring...... 
- 
  0@ 2008-12-19 21:28:01R1100041 Accepted 100 From sza603- 
 P1040 GCC Vag 6K 2008-12-19 20:57:28编译通过... 
 ├ 测试数据 01:答案正确... 0ms
 ├ 测试数据 02:答案正确... 0ms
 ├ 测试数据 03:答案正确... 0ms
 ├ 测试数据 04:答案正确... 9ms
 ---|---|---|---|---|---|---|---|-
 Accepted 有效得分:100 有效耗时:9ms#include 
 #include
 typedef long NUM[1112],RES[2223];void cvtnum(const char*n,NUM num,int*len) { 
 int i,l;
 const long _10n[]={1,10,100,1000,10000,100000,1000000,10000000,100000000};
 for(l=strlen(n),i=0;i=0) printf("%09ld",n);
 }int main() { 
 char s[10001];
 NUM a={0},b={0};
 RES c={0};
 int ca,cb;
 cvtnum(gets(s),a,&ca),cvtnum(gets(s),b,&cb);
 mul(a,b,ca,cb,c);
 out(c);
 return 0;
 }1000000000进制……………… 
- 
  0@ 2008-12-14 21:51:17编译通过... 
 ├ 测试数据 01:答案正确... 0ms
 ├ 测试数据 02:答案正确... 0ms
 ├ 测试数据 03:答案正确... 0ms
 ├ 测试数据 04:答案正确... 41ms
 ---|---|---|---|---|---|---|---|-
 Accepted 有效得分:100 有效耗时:41ms编译通过... 
 ├ 测试数据 01:答案正确... 0ms
 ├ 测试数据 02:答案正确... 0ms
 ├ 测试数据 03:答案正确... 0ms
 ├ 测试数据 04:答案正确... 9ms
 ---|---|---|---|---|---|---|---|-
 Accepted 有效得分:100 有效耗时:9ms同样的代码GCC用了41ms,CPP竟然只用了9ms,真是郁闷 
- 
  0@ 2008-12-12 23:33:17编译通过... 
 ├ 测试数据 01:答案正确... 0ms
 ├ 测试数据 02:答案正确... 0ms
 ├ 测试数据 03:答案正确... 0ms
 ├ 测试数据 04:答案正确... 368ms
 ---|---|---|---|---|---|---|---|-
 Accepted 有效得分:100 有效耗时:368ms无语了……万进制 交 了 2次 才过…… 第一次 最后 一 点 竟然超时…… 
- 
  0@ 2008-12-07 14:53:04编译通过... 
 ├ 测试数据 01:答案正确... 0ms
 ├ 测试数据 02:答案正确... 0ms
 ├ 测试数据 03:答案正确... 0ms
 ├ 测试数据 04:答案正确... 0ms
 ---|---|---|---|---|---|---|---|-
 Accepted 有效得分:100 有效耗时:0msprogram p1040; 
 var
 a,b,c:array[1..100000]of longint;
 s:ansistring;
 i,j,x,la,lb,lc:longint;
 begin
 readln(s);
 la:=length(s);
 for i:=1 to la do
 a[la-i+1]:=ord(s[i])-48;
 readln(s);
 lb:=length(s);
 for i:=1 to lb do
 b[lb-i+1]:=ord(s[i])-48;
 fillchar(c,sizeof(c),0);
 for i:=1 to la do
 begin
 x:=0;
 for j:=1 to lb do
 begin
 x:=a[i]*b[j]+x div 10+c;
 c:=x mod 10;
 end;
 c:=x div 10;
 end;
 lc:=la+lb;
 while (c[lc]=0)and(lc>1) do
 dec(lc);
 for i:=lc downto 1 do write(c[i]);
 end.
- 
  0@ 2008-12-05 19:08:03var s1,s2:ansistring; 
 n,i,j,l1,l2,x,p:longint;
 a,b,c:array[0..10000]of longint;
 begin
 readln(s1);
 readln(s2);
 if length(s1) mod 4=0 then l1:=length(s1) div 4 else l1:=length(s1) div 4+1;
 if length(s1) mod 4=0 then p:=1 else p:=2;
 for i:=l1+1-length(s1) div 4 to l1 do
 for j:=1 to 4 do
 a[i]:=a[i]*10+ord(s1[(i-p)*4+length(s1) mod 4+j])-48;
 for i:=1 to length(s1) mod 4 do a[1]:=a[1]*10+ord(s1[i])-48;
 n:=length(s2);
 if n mod 4=0 then l2:=n div 4 else l2:=n div 4+1;
 if n mod 4=0 then p:=1 else p:=2;
 for i:=l2+1-n div 4 to l2 do
 for j:=1 to 4 do
 b[i]:=b[i]*10+ord(s2[(i-p)*4+n mod 4+j])-48;
 for i:=1 to n mod 4 do b[1]:=b[1]*10+ord(s2[i])-48;
 for i:=l1 downto 1 do
 for j:=l2 downto 1 do
 begin
 c:=c+a[i]*b[j];
 c:=c+cdiv 10000;
 c:=c mod 10000;
 end;
 x:=0;
 while c[x]=0 do inc(x);
 write(c[x]);
 for i:=x+1 to l1+l2-1 do
 if c[i]
- 
  0@ 2008-12-13 09:37:16var st1,st2:string; 
 a,b,c:array[1..500] of integer;
 ln1,ln2,i,j,max,s:integer;
 begin
 readln(st1);
 readln(st2);
 ln1:=length(st1);
 ln2:=length(st2);
 for i:=1 to ln1 do a[ln1-i+1]:=ord(st1[i])-48;
 for i:=1 to ln2 do b[ln2-i+1]:=ord(st2[i])-48;
 for i:=1 to ln1 do
 for j:=1 to ln2 do
 begin
 s:=i+j-1;
 c:=a[i]*b[j]+c;
 if c>=10 then
 begin
 c:=c+c div 10;
 c:=c mod 10;
 end;
 end;
 max:=ln1+ln2;
 while (c[max]=0) and (max>1) do
 max:=max-1;
 for i:=max downto 1 do
 begin
 write(c[i]);
 end;
 writeln;
 end.哪位大牛帮我看一下,我是小学的,也想找师傅 
- 
  0@ 2008-11-25 21:57:34无法忍受此题。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。 
- 
  0@ 2008-11-21 22:03:58丑陋的代码 
 var s1,s2:ansistring;
 n,i,j,l1,l2,x,p:longint;
 a,b,c:array[0..10000]of longint;
 begin
 readln(s1);
 readln(s2);
 n:=length(s1);
 if n mod 4=0 then l1:=n div 4 else l1:=n div 4+1;
 if n mod 4=0 then p:=1 else p:=2;
 for i:=l1+1-n div 4 to l1 do
 for j:=1 to 4 do
 a[i]:=a[i]*10+ord(s1[(i-p)*4+n mod 4+j])-48;
 for i:=1 to n mod 4 do a[1]:=a[1]*10+ord(s1[i])-48;
 n:=length(s2);
 if n mod 4=0 then l2:=n div 4 else l2:=n div 4+1;
 if n mod 4=0 then p:=1 else p:=2;
 for i:=l2+1-n div 4 to l2 do
 for j:=1 to 4 do
 b[i]:=b[i]*10+ord(s2[(i-p)*4+n mod 4+j])-48;
 for i:=1 to n mod 4 do b[1]:=b[1]*10+ord(s2[i])-48;
 for i:=l1 downto 1 do
 for j:=l2 downto 1 do
 begin
 c:=c+a[i]*b[j];
 c:=c+cdiv 10000;
 c:=c mod 10000;
 end;
 x:=0;
 while c[x]=0 do inc(x);
 write(c[x]);
 for i:=x+1 to l1+l2-1 do
 if c[i]