UVA 11375 高精度Bign类
求火柴的组成的数字最多能组成多少种数字,典型的递推问题
但是因为结果巨大,要用高精度运算
一开始手写高精度,不仅挫的要死,最后还WA了。
最后学了一下白书上面的bign类,相当方便啊。
#include <iostream>
#include <cstdio>
#include <string>
#include <cstring>
#include <algorithm>
#define N 720
using namespace std;
struct bign
{
int len,s[N];
bign()
{
memset(s,,sizeof s);
len=;
}
bign(int num) {*this=num;}
string str()const
{
string res="";
for(int i=;i<len;i++) res=(char)(s[i]+'')+res;
if(res=="") res="";
return res;
}
bign operator = (const char* num)
{
int i;
len=strlen(num);
for (i=;i<len;i++)
{
s[i]=num[len-i-]-'';
}
return *this;
}
bign operator =(int num)
{
char s[N];
sprintf(s,"%d",num);
*this=s;
return *this;
}
bign operator + (const bign& b )const
{
bign c;
c.len=;
int i,g=;
for (i=,g=;g||i<max(len,b.len);i++)
{
int x=g;
if (i<len) x+=s[i];
if (i<b.len) x+=b.s[i];
c.s[c.len++]=x%;
g=x/;
}
return c;
} };
istream& operator >>(istream &in, bign& x)
{
string s;
in >> s;
x = s.c_str();
return in;
}
ostream& operator <<(ostream &out, const bign& x)
{
out << x.str();
return out;
}
bign f[];
bign ans[];
int c[]={,,,,,,,,,};
int n;
int main()
{
for (int i=;i<=;i++)
f[i]=;
f[]=;
for (int i=;i<=;i++)
{
for (int j=;j<=;j++)
{
if (i+c[j]<= && !(i== && j==))
{
f[i+c[j]]=f[i+c[j]]+f[i];
}
}
}
ans[]=;
for (int i=;i<=;i++)
{
ans[i]=ans[i-]+f[i];
}
while (scanf("%d",&n)!=EOF)
{
if (n>=)
cout<<ans[n]+<<endl;//这里一开始写成直接 ans[n]=ans[n]+1,WA了好多次都没发现啊啊啊,不能改变原有值啊啊。。太粗心了
else
cout<<ans[n]<<endl;
}
return ;
}
UVA 11375 高精度Bign类的更多相关文章
- C++高精度运算类bign (重载操作符)
大数据操作,有例如以下问题: 计算:456789135612326542132123+14875231656511323132 456789135612326542132123*14875231656 ...
- [ C++ 快速高精度模板 ] [ BigN类 ] 大整数类 高精度 模板 BigInt FFT 快速傅里叶变换
[原创 转载请注明]瞎写的,如果代码有错,或者各位大佬有什么意见建议,望不吝赐教 更新日志: 对于规模较小的整数乘法使用$$O(n^2)$$方法,提高速度 modify()和operator[]的bu ...
- 【Java】【高精度】【递推】UVA - 11375 - Matches
d[i+c[j]]+=d[i](c[j]是拼成j所需的火柴数) d[0]=1: 别忘了不能有前导零,所以当i为零时,不要尝试去拼成零.反而应该在n>=6时,最后给答案加1(单独拼出0). imp ...
- .net平台下获取高精度时间类
原文:http://www.it118.org/specials/321869dd-98cb-431b-b6d2-82d973cd739d/d940a15c-0d36-4369-8de0-b07cf3 ...
- UVa 11375 - Matches
http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&p ...
- 一个 C# 获取高精度时间类(调用API QueryP*)
如果你觉得用 DotNet 自带的 DateTime 获取的时间精度不够,解决的方法是通过调用 QueryPerformanceFrequency 和 QueryPerformanceCounter这 ...
- 紫书 习题 10-16 UVa 1647 (高精度+递推)
这道题我已经推出00和1过两步变成00了,可我没有继续做下去-- 后来看了博客发现自己已经做了90%了-- 可惜了,以后不要轻易放弃. 1的个数有个规律,就是每次都乘以2,因为0和1下一步都会变出1 ...
- uva 11375
思路是刘书上的 但是个高精度 java 大数 ~~ import java.util.*; import java.io.*; import java.math.BigInteger; public ...
- uva 11375 Matches (递推)
http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&p ...
随机推荐
- 洛谷P1000 超级玛丽游戏(洛谷新手村1-1-1)
题目背景 本题是洛谷的试机题目,可以帮助了解洛谷的使用. 建议完成本题目后继续尝试P1001.P1008. 题目描述 超级玛丽是一个非常经典的游戏.请你用字符画的形式输出超级玛丽中的一个场景. *** ...
- 13.在项目中部署redis企业级数据备份方案以及各种踩坑的数据恢复容灾演练
到这里为止,其实还是停留在简单学习知识的程度,学会了redis的持久化的原理和操作,但是在企业中,持久化到底是怎么去用得呢? 企业级的数据备份和各种灾难下的数据恢复,是怎么做得呢? 1.企业级的持久化 ...
- PHP数组——定义,类型,遍历数组,数组函数
1.定义 $attr=array(); //标准定义方式 $attr=[1,2]; $attr[0]="hello"; ...
- 吴裕雄 Bootstrap 前端框架开发——Bootstrap 字体图标(Glyphicons):glyphicon glyphicon-cloud
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name ...
- Golang函数-不定参函数
Golang函数-不定参函数 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.
- centos yum安装redis,nginx
先安装源 yum install epel-release 之后 分别安装redis,nginx
- 51nod 1065:最小正子段和
1065 最小正子段和 基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题 收藏 取消关注 N个整数组成的序列a[1],a[2],a[3],-,a[n],从中选出一 ...
- mybatis关于级联查询结果集嵌套映射对象非列表的处理问题
工作中遇到这么一个问题,嵌套查询,返回json的时候,作为属性,deviceFields是一个device中的一个对象属性,在json返回的时候想要得到的应该是deviceFields:{ 具体属性} ...
- nodejs —— 流追加数据
在写入流的文档后添加 ,{ 'flags': 'a' } 即可 : var fs = require('fs') var readerStream ...
- 配置多个数据源datasource
https://www.jianshu.com/p/34730e595a8c @Primary.@Qualifire.@Autowired.@Resource https://blog.csdn.ne ...