想到了一个题目:对决二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的更多相关文章

  1. 使用程序获取整型数据和浮点型数据在内存中的表示---gyy整理

    使用程序获取整型数据和浮点型数据在内存中的表示. C++中整型(int).短整型(short int).单精度浮点数(float).双精度浮点数(double)在内存中所占字节数不同,因此取值范围也不 ...

  2. 实验12:Problem H: 整型数组运算符重载

    Home Web Board ProblemSet Standing Status Statistics   Problem H: 整型数组运算符重载 Problem H: 整型数组运算符重载 Tim ...

  3. PHP中IP地址与整型数字互相转换详解

    这篇文章主要介绍了PHP中IP地址与整型数字互相转换详解,本文介绍了使用PHP函数ip2long与long2ip的使用,以及它们的BUG介绍,最后给出自己写的两个算法,需要的朋友可以参考下 IP转换成 ...

  4. c# 计算一个整型数组的平均

    一个整型数组的平均: class Program { static void Main(string[] args) { ,,,,,,,,,}; double avg= GetAvg(array); ...

  5. 使用头文件climits中的符号常量获知整型数据的表数范围---gyy整理

    在头文件climits(limits.h)以宏定义的方式定义了各种符号常量来表示各种整型类型表示数的范围,如int的最大最小值,long的最大最小值等. 符号常量 表示 CHAR_BIT char 的 ...

  6. Java 判断是否为汉字 判断是否为乱码 判断字符串是否为双整型数字 整数 数字

    /**  * 判断是否为汉字  *   * @param str  * @return  */ public static boolean isGBK(String str) {  char[] ch ...

  7. Java整型数组的最大长度到底有多长?

    Java整型数组的最大长度到底有多长? 今天上网查了一下,各种说法都有,这个问题似乎总困扰我们Java初学者,无奈,只好自己试了一下,以下是我的测试代码,如果有错误,还望不吝赐教! 使用eclipse ...

  8. MySQL中整型数据的差别

    bigint 从 -2^63 (-9223372036854775808) 到 2^63-1 (9223372036854775807) 的整型数据(所有数字).存储大小为 8 个字节. P.S. b ...

  9. Android jni 编程4(对基本类型二维整型数组的操作)

    Android jni 编程 对于整型二维数组操作: 类型一:传入二维整型数组,返回一个整型值 类型二:传入二维整型数组,返回一个二维整型数组 声明方法: private native int Sum ...

随机推荐

  1. Android:requestWindowFeature应用程序窗体显示状态操作

    注意requestWindowFeature必须在 setContentView()之前调用. 1.DEFAULT_FEATURES:系统默认状态,一般不需要指定 2.FEATURE_CONTEXT_ ...

  2. WPF之小动画一

    定义动画: 直接使用Element进行BeginAnimation DoubleAnimation animation = new DoubleAnimation(); animation.By = ...

  3. Android 自绘TextView解决提前换行问题,支持图文混排

    先看下效果图: 上面是MTextView,下面是默认的TextView. 一.原因 用最简单的全英文句子为例,如果有一个很长的单词,这一行剩余的空间显示不下了,那么规则就是不打断单词,而是把整个单词丢 ...

  4. Revit 二次开发 沿弧形路径创建拉伸屋顶

    沿弧形路径创建拉伸屋顶 Revit的API中只能按照直线创建拉伸屋顶,不能按照曲线创建拉伸屋顶.在Revit的界面当中,可以用 构建->内建模型,进行放样创建屋顶.但是没有办法代码内建模型. 可 ...

  5. Vim插件列表

    01.helm(Vim-Swoop) 02.ap/vim-buftabline 03.wesleyche/SrcExpl 04.vim proc 05.vim shell 06.dhruvasagar ...

  6. CentOS 6.4 编译安装Mysql 5.6.14

    概述: CentOS 6.4下通过yum安装的MySQL是5.1版的,比较老,所以就想通过源代码安装高版本的5.6.14. 正文: 一:卸载旧版本 使用下面的命令检查是否安装有MySQL Server ...

  7. 【HDOJ】2388 Playground Hideout

    优先级队列直接AC. /* 2388 */ #include <iostream> #include <sstream> #include <string> #in ...

  8. java中synchronized的用法详解

    记下来,很重要. Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码. 一.当两个并发线程访问同一个对象object中的这个synchron ...

  9. MySQL优化器 limit影响的case

    测试的用例中,因为limit的大小不同,而产生了完全不同的执行计划: 1. 测试case: create table t1 ( f1 ) not null, f2 ) not null, f3 ) n ...

  10. 【转】10分钟搭建NDK的Android开发环境

    原文网址:http://blog.csdn.net/u012176591/article/details/23018913 作者:金良(golden1314521@gmail.com) csdn博客: ...