帮忙解决问题题

#include&iostream&
char *s=new char[1001];
char *ss=new char[1001];
char *p1=new char[1001];
int len_a,len_b,cont_a,cont_b,num,length,int_a,int_b,temp1,temp2,i;
void mul(char *a,char *b)
len_a=strlen(a)-1;
len_b=strlen(b)-1;
length=len_a+len_b;
temp2=i=0;
cont_a=cont_b=temp1=0;
if(num&=len_b)cont_a=0;
else cont_a=num-len_b;
if(num&len_b) cont_b=len_b;
else cont_b=
while(cont_b&=0&&cont_a&=len_a)
int_a=*(a+cont_a)-48;
int_b=*(b+cont_b)-48;
cont_a ++;
cont_b --;
temp1+=int_a*int_b;
*(s+i)=(temp1+temp2)%10+48; i++;
temp2=(temp1+temp2)/10;
if(num&length)
if(temp2!=0) {*(s+i)=temp2+48;*(s+i+1)='\0';}
else {*(s+i)='\0';}
int main()
int n,m,an[801],am1,am2,
register int i,j;
while(scanf(&%d%d&,&n,&m)!=EOF)
for(i=1;i&=n;i++)
scanf(&%d&,&an[i]);
for(i=0;i&m;i++)
scanf(&%d%d&,&am1,&am2);
tmp=am2-am1;
sprintf(ss,&%d&,an[am1]);
for(j=1;j&=j++)
sprintf(p1,&%d&,an[am1+j]);
mul(ss,strrev(p1));
strcpy(ss,s);
p=strrev(s);
printf(&%s\n&,p);
printf(&Homework Finished\n&);
delete p1;
我是用大数乘法来做的, 但是TLE了,我的大数乘法的大致算法是:比如12 * 34把它们转为字符串并倒序,为&21&和&43&然后;10的0次方位为:2*4=810的1次方位为:1*4+2*3=10, 向2次方进位后变010的2次方位为:1*3=3 加上前面的进位为:3+1=4把它们组合起来得到字符串&804&再把该字符串倒序变408即12 * 34的结果.....这样做TLE了, 谁有更好的解决办法...Orz------解决方案--------------------建议发到算法区
------解决方案--------------------有几个优化,建议你试试:1:乘法的进制建开大一些,如10^8,这样大于10^9才向前进位。每位保存的是一个8位数,速度会快很多。而且不用字符串,而用整型数组。2:你可以写一个大整型的除法,先把从第一位到第N位的结果都保存起来,这样可以简化乘法为一个大数与一个小数相乘。这样就每次查询就不用每次都进行了整个区间相乘。可以求p-q的就可以变为p / (q-1)
------解决方案--------------------改用unsigned int[]数组,每个数组元素的取值范围为0~2^32-1。比用一个char代表一个10进制位要快很多。运算的原理都是一样的。正负号单独处理。
------解决方案--------------------当然你也可以建线段树省掉高精度除法的麻烦.
------解决方案--------------------/ckh_0330/blog/item/22dffcc53ac76351.html
12345678910
12345678910
12345678910 上一篇:下一篇:文章评论相关解决方案 12345678910 Copyright & &&版权所有希望大家帮忙解决的一个问题_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
希望大家帮忙解决的一个问题
上传于|0|0|文档简介
&&Windows2000+SP4出现一种产生“*.sys”的病毒,杀不掉。请大家帮忙解决
阅读已结束,如果下载本文需要使用0下载券
想免费下载更多文档?
定制HR最喜欢的简历
你可能喜欢更多频道内容在这里查看
爱奇艺用户将能永久保存播放记录
过滤短视频
暂无长视频(电视剧、纪录片、动漫、综艺、电影)播放记录,
使用您的微博帐号登录,即刻尊享微博用户专属服务。
使用您的QQ帐号登录,即刻尊享QQ用户专属服务。
使用您的人人帐号登录,即刻尊享人人用户专属服务。
按住视频可进行拖动
把视频贴到Blog或BBS
当前浏览器仅支持手动复制代码
视频地址:
flash地址:
html代码:
通用代码:
通用代码可同时支持电脑和移动设备的分享播放
收藏成功,可进入查看所有收藏列表
方式1:用手机看
用爱奇艺APP或微信扫一扫,在手机上继续观看:
“师兄帮帮忙”网站火爆 可求助修电脑解数学题
方式2:一键下载至手机
限爱奇艺安卓6.0以上版本
使用微信扫一扫,扫描左侧二维码,下载爱奇艺移动APP
其他安装方式:手机浏览器输入短链接http://71.am/udn
下载安装包到本机:&&
设备搜寻中...
请确保您要连接的设备(仅限安卓)登录了同一爱奇艺账号 且安装并开启不低于V6.0以上版本的爱奇艺客户端
连接失败!
请确保您要连接的设备(仅限安卓)登录了同一爱奇艺账号 且安装并开启不低于V6.0以上版本的爱奇艺客户端
部安卓(Android)设备,请点击进行选择
请您在手机端下载爱奇艺移动APP(仅支持安卓客户端)
使用微信扫一扫,下载爱奇艺移动APP
其他安装方式:手机浏览器输入短链接http://71.am/udn
下载安装包到本机:&&
爱奇艺云推送
请您在手机端登录爱奇艺移动APP(仅支持安卓客户端)
使用微信扫一扫,下载爱奇艺移动APP
180秒后更新
打开爱奇艺移动APP,点击“我的-扫一扫”,扫描左侧二维码进行登录
没有安装爱奇艺视频最新客户端?
爸爸去哪儿2游戏 立即参与
“师兄帮帮忙”网站火爆 可求助修电脑解数学题
播放量数据:
18,164人已订阅
你可能还想订阅他们:
{{#needAdBadge}} 广告{{/needAdBadge}}
&正在加载...
您使用浏览器不支持直接复制的功能,建议您使用Ctrl+C或右键全选进行地址复制
安装爱奇艺视频客户端,
马上开始为您下载本片
5秒后自动消失
&li data-elem="tabtitle" data-seq="{{seq}}"& &a href="javascript:void(0);"& &span>{{start}}-{{end}}&/span& &/a& &/li&
&li data-downloadSelect-elem="item" data-downloadSelect-selected="false" data-downloadSelect-tvid="{{tvid}}"& &a href="javascript:void(0);"&{{pd}}&/a&
选择您要下载的《
色情低俗内容
血腥暴力内容
广告或欺诈内容
侵犯了我的权力
还可以输入
您使用浏览器不支持直接复制的功能,建议您使用Ctrl+C或右键全选进行地址复制问题补充&&
本页链接:
(1) =166余11所以公元2003年属猴(2) 设运动场边长为X,那么延长5米为X+5,依题意得(X+5)(X+5)-X*X=225解得X=20原来的面积则为400平方米
1、我国农历用鼠、牛、虎、兔、龙、蛇、马、羊、猴、鸡、、猪12种动物按顺序轮流代表各年的年号,如果公元1年属鸡年,那么公元2003年属什么年?=165余3,那么2003年是鸡后的第二年,是猪年2、有一个正方形的运动场,把它的边长各延长5米之后,运动场的面积增加225平方米。她原来的面积是多少平方米?设原来边长为X,则有(x+5)(x+5)-x*x=225x=20原来面积是400平方米.
1.羊年(我是用今年年推算的)2.400。20是原正方形的边长。方程是(x+5)^2-x^2=225(设原边长x米)
FancyMouse&
1、我一个个数过来,如果没有数错的话,2003年是羊年。2、我到操场上量了一下,20米边长的运动场面积是400平方米。加5米,是25米,面积是625平方米。数了一个多小时,量了一个多小时,都感冒了,好累。1年是鸡年,那么过12的倍数年也是鸡年。那么1201年一定是鸡年,那么1801年也是,那么1981年也是,那么1993年也是。再数过来就容易拉。你是小学4年级是不是?
1,答案:羊年(2003-1)/ 12= 166……10则166*12+1=1993是鸡年,推下可知2003年是羊年。2,答案:400平方米设原长为x,则有(x+5)^2=x^2+225,解方程得x=20故原长为20米则原面积为20^2=400
猜你感兴趣

我要回帖

更多关于 帮忙做题的软件 的文章

 

随机推荐