大数记录之,大数乘整型数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 ...
随机推荐
- Java中List的排序
第一种方法,就是list中对象实现Comparable接口,代码如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 2 ...
- ANDROID_MARS学习笔记_S01_008Linear_layout例子
1.netstone_layout.xml <?xml version="1.0" encoding="utf-8"?> <LinearLay ...
- ENVI Services Engine5.1 应用开发入门教程
原文地址: ENVI Services Engine5.1 应用开发入门教程_ENVI-IDL中国_新浪博客 http://blog.sina.com.cn/s/blog_764b1e9d0102uy ...
- *IntelliJ idea创建创建Maven管理的Java Web项目
配置IntelliJ在IntelliJ的设置中,可以设置maven的安装目录,settings.xml文件的位置,和本地仓库的位置等信息.
- 172. Factorial Trailing Zeroes
题目: Given an integer n, return the number of trailing zeroes in n!. Note: Your solution should be in ...
- android从应用到驱动之—camera(1)---程序调用流程[转]
一.开篇 写博客还得写开篇介绍,可惜,这个不是我所擅长的.就按我自己的想法写吧. 话说camera模块,从上层到底层一共包含着这么几个部分: 1.apk------java语言 2.camera的ja ...
- 宏FSP_SEG_INODES_PER_PAGE
#define FSP_SEG_INODES_PER_PAGE(zip_size) \ (((zip_size ? zip_size : UNIV_PAGE_SIZE) \ - FSEG_ARR_OF ...
- 函数buf_page_get
/**************************************************************//** NOTE! The following macros shoul ...
- Samba 'smbcacls'命令安全绕过漏洞
漏洞版本: Samba 4.x 漏洞描述: Bugtraq ID:66232 CVE ID:CVE-2013-6442 Samba是一款实现SMB协议.跨平台进行文件共享和打印共享服务的程序. 当使用 ...
- 为自己打造Linux小系统
一.前言 Linux操作系统至1991.10.5号诞生以来,就源其开源性和自由性得到了很多技术大牛的青睐,每个Linux爱好者都为其贡献了自己的一份力,不管是在Linux内核还是开源软件等方面,都为 ...