大数记录之,大数乘整型数nyoj832
想到了一个题目:对决二http://acm.nyist.net/JudgeOnline/problem.php?pid=832
但是发现有一道题目是相似的:http://acm.nyist.net/JudgeOnline/problem.php?pid=541
但是答案是不一样的、我的代码交到战斗力题目上会wa....终于找到答案了,是求大数的代码有漏洞。
求大数的代码:刚开始没有加k=0,找好久错误。
int cheng(int x,int p)
{
int k;
int t=p;
for(int i=0,k=0;i<t;i++)
{
s[i]=s[i]*x+k;k=0;
//printf("%d\n",s[i]);
if(s[i]>=10)
{
if(i==p-1)
t++;
int h=s[i];
s[i]=s[i]%10;
k=h/10;
}
}
return t;
}
别人的:
int cheng(int x,int p)//大数乘小数
{
int i,j,k,t;
int temp = 0;
int c = 0;t=p;
for(i=0; i<t; i++)
{
temp = s[i]*x+c;
if(i==p-1&&temp>=10)
t++;
s[i] = temp%10;
c = temp/10;
}
return t;
}
不加字符长度的:
int multiply(int x)//大数乘小数
{
int i,j,k;
int temp = 0;
int c = 0;
for(i=0; i<200; i++)
{
temp = ans[i]*x+c;
ans[i] = temp%10;
c = temp/10;
}
}
题意都是吧一个数n分成多个数的和,让多个数的和的乘积最大!
后来发现我的思路跟那道题目不一样,我的思路是,判断能分成3尽量分成3,分不了3的分成2。比如6分成2的话为2+2+2,乘积为2^3=8,而分成3的话为3+3,乘积为3*3=9;
所以我先判断是不是奇数,是奇数的话先分成一个3,即n-3,变成偶数,然后在判断大于6的话,ans*=9;n-=6;不大于6的话是否大于4,大于四的话ans*=4;n-=4;然后大于2的情况也一样,直到为0.
果然思路是对的,是乘法搞错了。在好好看看、代码:
#include <stdio.h>
#include <string.h>
int s[100000];
int cheng(int x,int p)//大数乘小数
{
int i,j,k,t;
int temp = 0;
int c = 0;t=p;
for(i=0; i<t; i++)
{
temp = s[i]*x+c;
if(i==p-1&&temp>=10)
t++;
s[i] = temp%10;
c = temp/10;
}
return t;
}
/*int cheng(int x,int p)
{
int k;
int t=p;
for(int i=0,k=0;i<t;i++)
{
s[i]=s[i]*x+k;
//printf("%d\n",s[i]);
if(s[i]>=10)
{
if(i==p-1)
t++;
int h=s[i];
s[i]=s[i]%10;
k=h/10;
}
}
return t;
}*/
int main()
{
int n,T;
scanf("%d",&T);
while(T--)
{ scanf("%d",&n);
memset(s,0,sizeof(s));
int p=1;s[0]=1;
if(n<4)
{
printf("%d\n",n);continue;
}
else
{
if(n%2)
{
p=cheng(3,p);n-=3;
}
while(n>0)
{
if(n>=6)
{
p=cheng(9,p);
n-=6;
}
else if(n>=4)
{
p=cheng(4,p);
n-=4;
}
else
{
p=cheng(2,p);
n-=2;
}
} }
for(int i=p-1;i>=0;i--)
printf("%d",s[i]);
printf("\n");
}
return 0;
}
大数记录之,大数乘整型数nyoj832的更多相关文章
- 使用程序获取整型数据和浮点型数据在内存中的表示---gyy整理
使用程序获取整型数据和浮点型数据在内存中的表示. C++中整型(int).短整型(short int).单精度浮点数(float).双精度浮点数(double)在内存中所占字节数不同,因此取值范围也不 ...
- 实验12:Problem H: 整型数组运算符重载
Home Web Board ProblemSet Standing Status Statistics Problem H: 整型数组运算符重载 Problem H: 整型数组运算符重载 Tim ...
- PHP中IP地址与整型数字互相转换详解
这篇文章主要介绍了PHP中IP地址与整型数字互相转换详解,本文介绍了使用PHP函数ip2long与long2ip的使用,以及它们的BUG介绍,最后给出自己写的两个算法,需要的朋友可以参考下 IP转换成 ...
- c# 计算一个整型数组的平均
一个整型数组的平均: class Program { static void Main(string[] args) { ,,,,,,,,,}; double avg= GetAvg(array); ...
- 使用头文件climits中的符号常量获知整型数据的表数范围---gyy整理
在头文件climits(limits.h)以宏定义的方式定义了各种符号常量来表示各种整型类型表示数的范围,如int的最大最小值,long的最大最小值等. 符号常量 表示 CHAR_BIT char 的 ...
- Java 判断是否为汉字 判断是否为乱码 判断字符串是否为双整型数字 整数 数字
/** * 判断是否为汉字 * * @param str * @return */ public static boolean isGBK(String str) { char[] ch ...
- Java整型数组的最大长度到底有多长?
Java整型数组的最大长度到底有多长? 今天上网查了一下,各种说法都有,这个问题似乎总困扰我们Java初学者,无奈,只好自己试了一下,以下是我的测试代码,如果有错误,还望不吝赐教! 使用eclipse ...
- MySQL中整型数据的差别
bigint 从 -2^63 (-9223372036854775808) 到 2^63-1 (9223372036854775807) 的整型数据(所有数字).存储大小为 8 个字节. P.S. b ...
- Android jni 编程4(对基本类型二维整型数组的操作)
Android jni 编程 对于整型二维数组操作: 类型一:传入二维整型数组,返回一个整型值 类型二:传入二维整型数组,返回一个二维整型数组 声明方法: private native int Sum ...
随机推荐
- 苹果p12文件--一个苹果证书怎么多次使用(蛋疼,这些问题只有和其他企业合作才会遇到,别人的账号不可能给你,蛋疼....)
在苹果开发者网站申请的证书,是授权mac设备的开发或者发布的证书,这意味着一个设备对应一个证书,但是99美元账号只允许生成3个发布证书,两个开发证书,这满足不了多mac设备的使用,使用p12文件可以解 ...
- [itint5]Excel数转换
http://www.itint5.com/oj/#23 这里就是26进制的转换,但是要注意没有0,A就是1,Z就是26.所以要想象成从0开始,才能用原来的方法计算. //将十进制数转换为excel数 ...
- SQLite入门与分析(四)---Page Cache之事务处理(2)
写在前面:个人认为pager层是SQLite实现最为核心的模块,它具有四大功能:I/O,页面缓存,并发控制和日志恢复.而这些功能不仅是上层Btree的基础,而且对系统的性能和健壮性有关至关重要的影响. ...
- Android:Style和Theme
在Web开发中,Html负责内容,CSS负责表现.同样,在Android开发中,可以使用Theme.Style+UI组件的方式实现内容和形式的分离. Style是针对窗体元素级别的,改变指定控件或者L ...
- php Ajax 局部刷新
php Ajax 局部刷新: HTML部分 </head> <body> <h1>Ajax动态显示时间</h1> <input type=&quo ...
- 摄像头(3)调用系统拍照activity来拍照
import android.app.Activity; import android.content.Intent; import android.content.pm.PackageManager ...
- maven打包源代码sources.jar和javadoc.jar帮助文档
maven中如何打包源代码 *-sources.jar 方式一 : 命令行方式 进入cmd命令行,进入项目工程pom.xml所在路径目录,运行mvn source:jar 和 mvn javado ...
- 使用HQL查询
HQL是Hibernate Query Language的缩写,语法很想SQL,但是HQL是一种面向对象的查询语言.SQL的操作对象是数据列.表等数据库对象,而HQL操作的是类.实例.属性. HQL查 ...
- FormsAuthentication 登录兼容 IE11 保存cookie
现象:使用FormsAuthentication进行登录验证,在IE11客户端无法保存cookie 解决方法:在web.config中的forms中增加cookieless="UseCook ...
- poj2752 水题
又2b了一次…… var s:ansistring; ans,pre:..] of longint; i,k,tot:longint; procedure main; begin pre[]:=;k: ...