HDU 5920Ugly Problem
来源:互联网 发布:ubuntu安装桌面环境 编辑:程序博客网 时间:2024/06/05 02:43
题意: 拆解成小于等于50个回文串
思路:
从中间分割,使得左右对称,字符串做-法
#include <iostream>#include <stdio.h>#include <cstring>using namespace std;char a[10005];char b[10005];char c[10005];char ans[55][10005];int all=0; int flag=0;void sub(){ strcpy(c,b); if(flag) for(int i=0;i<strlen(c);i++) c[i]=c[i+1]; all++; strcpy(ans[all],c); int len=strlen(a)-1; int n = len; int t; while(len>=0) { if(a[len]-b[len]<0) { a[len]=a[len]-b[len]+10+'0'; a[len-1]--; } else a[len]=a[len]-b[len]+'0'; if(a[len] != '0') t = len; len--; } for(int i = 0; i <= n - t; i++){ a[i] = a[i + t]; } a[n - t + 1] = '\0';}int main(){ int t; scanf("%d",&t); for(int cs=1; cs<=t; cs++) { flag=0; all=0; memset(ans,0,sizeof(ans)); scanf("%s",&a); int i,j; while(1) { if(strlen(a)==1) { all++; strcpy(ans[all],a); break; } if(strlen(a)==2&&a[0]=='1') { all++; memset(c,0,sizeof(c)); c[0]='9'; strcpy(ans[all],c); int res=0; for(int i=0;i<2;i++) res=res*10+a[i]-'0'; c[0]=res-9+'0'; all++; strcpy(ans[all],c); break; } strcpy(b,a); strcpy(c,a); int tmp=strlen(a); if(tmp%2==1) { i=tmp/2; j=tmp/2; } else { i=tmp/2-1; j=tmp/2; } int fi=i,fj=j; if(a[i]>a[j]) { a[i]--; while(i>=0) { b[i]=a[i]; b[j++]=a[i--]; } } else if(a[i]==a[j]) { if(a[fi]=='0') { a[fi]='9'; while(a[fi--]) { if(a[fi]!='0') { if(a[fi]=='1'&&fi==0) flag=1; a[fi]--; break; } a[fi]='9'; } } else { a[fi]--; } if(i==j) { b[j]=a[i]; if(!flag) i--,j++; else j++; } while(i>=0) { b[i]=a[i]; b[j++]=a[i--]; } if(flag) { b[0]='0'; for(int i=1;i<tmp;i++) b[i]='9'; b[tmp]='\0'; } } else { while(i>=0) { b[i]=a[i]; b[j++]=a[i--]; } } strcpy(a,c); sub(); if(strlen(a)==1) { all++; strcpy(ans[all],a); break; } } printf("Case #%d:\n",cs); printf("%d\n",all); for(int i=1;i<=all;i++) printf("%s\n",ans[i]); } return 0;}
阅读全文
0 0
- Hdu 5920 Ugly Problem
- HDU 5920Ugly Problem
- HDU 5920 Ugly Problem(模拟)
- HDU 5920 Ugly Problem(大数减法 模拟)
- hdu 5920 Ugly Problem 字符串处理
- hdu 5920 Ugly Problem(构造题)
- Ugly Problem HDU
- HDU 5920 Ugly Problem 【模拟】 (2016中国大学生程序设计竞赛(长春))
- HDU 5920 Ugly Problem CCPC长春赛区 贪心
- hdu 5920 Ugly Problem 贪心构造 大整数
- hdu 5920 Ugly Problem(CCPC长春,构造回文数)
- HDU 5920 Ugly Problem (JAVA高精度+回文数)
- HDU 5920 Ugly Problem (大数模拟 构造回文串)
- hdu 4920 Ugly Problem [模拟+大数减法]
- HDU 5918 Ugly Problem(模拟)
- HDOJ 5920 Ugly Problem 【模拟】
- Ugly Problem
- Ugly Problem(hdu 5920 && 2016ICPC长春现场赛模拟题)
- Linux格式化硬盘 常用命令小记
- STM32通过SPI采集DT50 ADS8320数据
- 假币问题 oj41
- Inorder Tree Traversal | Iterative & Recursive
- plsql developer 12 32位 v12.0.1汉化中文版
- HDU 5920Ugly Problem
- SSM整合表单接受--第二天
- 神奇的fans oj40
- linux-1 查看文件类型及统计文件容量信息
- Spring(10)——bean作用范围(二)——自定义scope
- (OOP:Object Oriented Programming)面向对象
- 斐波纳契数列 oj39
- android byteBuffer的使用
- Eclipse很卡的解决方法