讨论 / 压八位 过4个点 为什么错
908630769 2012-12-31 02:38:00
点我顶贴 收藏 删除
个人信息 消息 注销 OIBH 赞助我们 首页 题库 赛题 比赛 状态 排行 讨论 单题讨论 题解 团队 查看状态 Show Status

题目:A*B Problem

状态: Unaccepted

测评机: Xeond[6]

得分: 40分

提交日期: 2011-3-12 16:41:00

有效耗时: 203毫秒

测试结果1: 通过本测试点|有效耗时62ms

测试结果2: 通过本测试点|有效耗时47ms

测试结果3: 通过本测试点|有效耗时47ms

测试结果4: 通过本测试点|有效耗时47ms

测试结果5: 测试结果错误.错误结果为:-3667085200000000-91846960000000-536557290000000-630215190000000-938566670000000-210447840000000-792398240000000-508752630000000-454370950000000-597985250000000-834251430000000-495527750000000-540014840000000-5524270000000-518670630000000-27140640000000-73944710000000-679935010000000-48861174-634166690000000-737681670000000-960371720000000-696297230000000-221939580000000-41884090000000-正确结果应为:175094088565811303483041142972995322843888170452720603077788605627957378497424669407854113810182207232261530394431314263303768792976922424363899568391928320881651379191275107411317899494600263837826550374297201883756164454085482678805614815786540649723438925044998443385402888053093658936896576387280709451179508229127558981076424691141485873161521861271854279877522888213702433226980291897342768237159203278819774659774526559923479396030684770376652325550412039649409528560603提交代码:

#include"stdio.h"

main()

long long a[20000]={0},b[20000]={0},i,j,n,lc,k=0,l=0;

long long c[20000]={0};

char p[20000],q[20000];

scanf("%ld",&n);

scanf("%s %s",p,q);

for (i=0;i<n;i++)

a[i]=p[n-i-1]-'0';

for (i=0;i<n;i++)

b[i]=q[n-i-1]-'0';

for (i=0;i<n;i=i+8)

{

for (j=0;j<n;j=j+8)

{

c[k+l]+=(a[i+7]*10000000+a[i+6]*1000000+a[i+5]*100000+a[i+4]*10000+a[i+3]*1000+a[i+2]*100+a[i+1]*10+a[i])*(b[j+7]*10000000+b[j+6]*1000000+b[j+5]*100000+b[j+4]*10000+b[j+3]*1000+b[j+2]*100+b[j+1]*10+b[j]);

c[k+l+1]+=c[k+l]/100000000;

c[k+l]%=100000000;

l++;

}

l=0;

k++;

}

if (c[(2*n)/8]==0)

lc=(2*n)/8-1;

else

lc=(2*n)/8;

for(i=lc;i>=0;i--)

{

if(c[i]<10 && a[i]>0 && i!=lc)

printf("0000000");

if(c[i]<100 && c[i]>=10 && i!=lc)

printf("000000");

if(c[i]<1000 && c[i]>=100 && i!=lc)

printf("00000");

if(c[i]<10000 && a[i]>=1000 && i!=lc)

printf("0000");

if(c[i]<100000 && c[i]>=10000 && i!=lc)

printf("000");

if(c[i]<1000000 && c[i]>=100000 && i!=lc)

printf("00");

if(c[i]<10000000 && c[i]>=1000000 && i!=lc)

printf("0");

if(c[i]==0)

printf("00000000");

else

printf("%I64d",c[i]);

}

}

#1 875880923@2012-12-31 02:38:00
回复 删除
数组开大一点 试试 这数据似乎有点坑爹
查看更多回复
提交回复