HDU 5920 Ugly Problem 高精度减法大模拟 ---2016CCPC长春区域现场赛
题意:给定一个很大的数,把他们分为数个回文数的和,分的个数不超过50个,输出个数并输出每个数,special judge。
题解:现场赛的时候很快想出来了思路,把这个数从中间分为两部分,当位数为偶数的时候3456就分为34和56,34-1=33,回文数3333,3456-3333=123然后继续算;当位数为奇数的时候34567就分为34和67,5-1=4,回文数34443,34567-34443=124然后继续算。但是一年都没有写过高精度减法的题了,这个大模拟写了很久最后判断奇偶性都判断蒙了- - !,汗。考虑的太复杂了,前导0,奇偶性,如果前面比后面小就不减1的情况,有的是我想多了,找了一份比较短的代码虚心学习一下,写的很棒。
#include<bits/stdc++.h>
using namespace std;
const int N=+; bool getPal(char *s) { //得到回文数
int n=strlen(s);
if(n==)return ;
if(n==&&s[]=='') {
s[]='';
s[]=;
return ;
}
s[(n+)/-]--;
for(int i=(n+)/-; i>; i--) {
if(s[i]<'')s[i]+=,s[i-]--;
else break;
}
if(s[]=='') {
for(int i=; i<n; i++)s[i]=s[i+];
n--;
}
for(int i=(n+)/; i<n; i++)
s[i]=s[n-i-];
return ;
}
bool subStr(char *a,char *b) { //减去回文数
int na=strlen(a);
int nb=strlen(b);
for(int i=na-,j=nb-; j>=; i--,j--) {
if(a[i]>=b[j])a[i]=a[i]-b[j]+'';
else a[i]=a[i]+-b[j]+'',a[i-]--;
}
int p;
for(p=; a[p]==''; p++);
if(p==na)return ;
for(int i=; p<=na; p++,i++)a[i]=a[p];
return ;
}
char s[N],ans[][N];
int cnt;
int main() {
//freopen("f.txt","r",stdin);
int T;
scanf("%d",&T);
for(int cas=; cas<=T; cas++) {
scanf("%s",s);
for(cnt=;; cnt++) {
strcpy(ans[cnt],s);
if(getPal(ans[cnt])||subStr(s,ans[cnt]))break;
} printf("Case #%d:\n%d\n",cas,cnt+);
for(int i=; i<=cnt; i++)
printf("%s\n",ans[i]);
}
return ;
}
HDU 5920 Ugly Problem 高精度减法大模拟 ---2016CCPC长春区域现场赛的更多相关文章
- HDU 5920 Ugly Problem 【模拟】 (2016中国大学生程序设计竞赛(长春))
Ugly Problem Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Tota ...
- HDU - 5920 Ugly Problem 求解第一个小于n的回文数
http://acm.hdu.edu.cn/showproblem.php?pid=5920 http://www.cnblogs.com/xudong-bupt/p/4015226.html 把前半 ...
- HDU 5920 Ugly Problem
说起这道题, 真是一把辛酸泪. 题意 将一个正整数 \(n(\le 10^{1000})\) 分解成不超过50个回文数的和. 做法 构造. 队友UHC提出的一种构造方法, 写起来比较方便一些, 而且比 ...
- HDU 1022 Train Problem I(栈模拟)
传送门 Description As the new term comes, the Ignatius Train Station is very busy nowadays. A lot of st ...
- hdu 4771 Stealing Harry Potter's Precious (2013亚洲区杭州现场赛)(搜索 bfs + dfs) 带权值的路径
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4771 题目意思:'@' 表示的是起点,'#' 表示的是障碍物不能通过,'.' 表示的是路能通过的: ...
- HDU 4811 Ball -2013 ICPC南京区域现场赛
题目链接 题意:三种颜色的球,现给定三种球的数目,每次取其中一个放到桌子上,排成一条线,每次放的位置任意,问得到的最大得分. 把一个球放在末尾得到的分数是它以前球的颜色种数 把一个球放在中间得到的分数 ...
- D - Ugly Problem HDU - 5920
D - Ugly Problem HDU - 5920 Everyone hates ugly problems. You are given a positive integer. You must ...
- hdu-5920 Ugly Problem(贪心+高精度)
题目链接: Ugly Problem Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Other ...
- hdu 5920(模拟)
Ugly Problem Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Tota ...
随机推荐
- Nginx安装配置(转)
Nginx 安装配置 Nginx("engine x")是一款是由俄罗斯的程序设计师Igor Sysoev所开发高性能的 Web和 反向代理 服务器,也是一个 IMAP/POP3/ ...
- Net上传附件大小控控值(转)
Server Error 404 – File or directory not found. The resource you are looking for might have been rem ...
- js(jquery)代码在页面上实时地显示时间
一.引入jquery 二.HTML代码 三.js代码 1)引入js代码 2)下面是完整的js代码
- torch 入门
torch 入门1.安装环境我的环境mac book pro 集成显卡 Intel Iris不能用 cunn 模块,因为显卡不支持 CUDA2.安装步骤: 官方文档 (1).git clone htt ...
- 将json返回的日期格式转换
<script> function ChangeDateFormat(cellval) { var date = new Date(parseInt ...
- Android 全屏显示
Android全屏显示: @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInst ...
- 解决vs2010“创建或打开C++浏览数据库文件 发生错误”的问题 Microsoft SQL Server Compact 3.5
有网友说打开vs2010安装光盘,搜索 SSCERuntime_x86-chs.msi,重新安装之.于是果断搜索,发现SSCERuntime_x86-chs.msi,另外发现一个SSCEVSTools ...
- QQ空间个人中心的广告
http://qzonestyle.gtimg.cn/qzone/space_item/boss_pic/*.jpghttp://img*.paipaiimg.com/*.jpghttp://cn.q ...
- MS Project 使用之创建项目信息
1. 我们打开MS Project 2013,创建一个空白文档. 2. 切换“项目”选项卡,点击“项目信息”,设置项目开始时间等信息,项目一般是需要设置开始时间和使用日历的,下面我们分别进行设置 如, ...
- iOS 8 Xcode6 设置Launch Image 启动图片
本人apem http://www.mamicode.com/info-detail-494411.html 如何设置App的启动图,也就是Launch Image? Step1 1.点击Image. ...