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 ...
随机推荐
- 008.CI4框架CodeIgniter, Controller控制器传输参数到View视图
01. 在CI4中输出VIEW视图,并且传入参数,代码如下: <?php namespace App\Controllers; class Home extends BaseController ...
- C#最小化到托盘+双击托盘恢复+禁止运行多个该程序
托盘程序的制作: 1.添加notifyIcon控件,并添加Icon,否则托盘没有图标(托盘右键菜单也可直接在属性里添加):2.响应Form的Resize或SizeChanged消息: // Hide ...
- [YOLO]《You Only Look Once: Unified, Real-Time Object Detection》笔记
一.简单介绍 目标检测(Objection Detection)算是计算机视觉任务中比较常见的一个任务,该任务主要是对图像中特定的目标进行定位,通常是由一个矩形框来框出目标. 在深度学习CNN之前,传 ...
- 计算方法执行完的耗时 c#
Stopwatch watch = Stopwatch.StartNew(); //要执行的方法 test(); watch.Stop(); Console.WriteLine(string.Form ...
- Flink Window窗口机制
总览 Window 是flink处理无限流的核心,Windows将流拆分为有限大小的"桶",我们可以在其上应用计算. Flink 认为 Batch 是 Streaming 的一个特 ...
- springboot - 映射 /error 到自定义且实现了ErrorController的Controller
1.总览 2.代码 1).pom.xml <dependencies> <dependency> <groupId>org.springframework.boot ...
- 初步了解URL
URl的定义: 在webs上每种可用的资源(比如:HTML文档,图像,视频片段,程序等)都可以由一个通用的资源标志符(Universal Resource Identifier)进行定位.URl的组成 ...
- CentOS下的安装命令 安装Nginx 更新yum源 kali系统当中的软件管理命令(第五天)
Linux下软件的安装:方式:yum/rpm/源码安装YUM安装(帮助管理员解决依赖关系):yum search mysqld 在源中搜索软件包yum install mysql-connector- ...
- HDU 4662 MU Puzzle(找规律)
题意:问是否能把MI通过以下规则转换成给定的字符串s. 1.使M之后的任何字符串加倍(即,将Mx更改为Mxx). 例如:MIU到MIUIU.2.用U替换任何III.例如:MUIIIU至MUUU.3.去 ...
- iOS 保存图片(视频)到相册
1.C语言函数方式实现 注意:UIImageWriteToSavedPhotosAlbum方法必须实现代理方法,否则会崩溃. //参数1:图片对象 //参数2:成功方法绑定的target //参数3: ...