大数记录之,大数乘整型数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 ...
随机推荐
- winform学习日志(十九)----------真正三层架构之登录
摘要:一:三层构架的基础知识在项目开发的过程中,有时把整个项目分为三层架构,其中包括:表示层(UI).业务逻辑层(BLL)和数据访问层(DAL).三层的作用分别如下: 表示层:为用户提供交互操作界面, ...
- yii执行原理
应用执行流程: 浏览器向服务器发送 Http Request | 控制器(protected/controllers) | |---> Action | 创建模型 (Model) | 检查$_P ...
- 12232 - Exclusive-OR
12232 - Exclusive-OR 题目大意是可以设定一个点Xp=v,或者Xp^Xq=v,然后查询Xa^Xb^Xc...等于多少. 由于异或操作跟判连通性很类似,这里可以使用并查集来解决,对于X ...
- ssh-keygen的使用方法
一.概述 1.就是为了让两个linux机器之间使用ssh不需要用户名和密码.采用了数字签名RSA或者DSA来完成这个操作 2.模型分析 假设 A (192.168.20.59)为客户机器,B(192. ...
- Android 签名(6)编译时源码的签名
1,使用源码中的默认签名 在源码中编译一般都使用默认签名的,在某源码目录中用运行下面命令能看到签名命令. $ mm showcommands Android提供了签名的程序signapk.jar,用法 ...
- git svn rebase出现了checksum mismatch的错误
http://stackoverflow.com/questions/3156744/git-svn-rebase-checksum-mismatch This solution was the on ...
- 新建并保存一个空的Excel
测试用的 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; ...
- 几种java通信(rmi,http,hessian,webservice)协议性能比较
一.综述 本文比较了RMI,Hessian,Burlap,Httpinvoker,web service等5种通讯协议的在不同的数据结构和不同数据量时的传输性能.RMI是java语言本身提供的通讯协议 ...
- 大四实习准备2_java异常处理_android控件练习
2015-4-24 Java 异常处理 可以有多个catch;ArrayIndexOutOfBoundsException类是Exception类的子类RuntimeException类的一个间接子类 ...
- 关于SqlParameter中IN子句查询的问题
今天调试到方法中代码: String hotelCodes =”’’,’’,’’”; string sqltext ="select * from HotelMedalInfo where ...