D - Ugly Problem HDU - 5920
You are given a positive integer. You must represent that number by sum of palindromic numbers.
A palindromic number is a positive integer such that if you write
out that integer as a string in decimal without leading zeros, the
string is an palindrome. For example, 1 is a palindromic number and 10
is not.
For each test case, there is only one line describing the given integer s (1≤s≤101000).OutputFor each test case, output “Case #x:” on the first line
where x is the number of that test case starting from 1. Then output the
number of palindromic numbers you used, n, on one line. n must be no
more than 50. en output n lines, each containing one of your
palindromic numbers. Their sum must be exactly s.Sample Input
2
18
1000000000000
Sample Output
Case #1:
2
9
9
Case #2:
2
999999999999
1
Hint
9 + 9 = 18
999999999999 + 1 = 1000000000000
OJ-ID:
hdu-5920
author:
Caution_X
date of submission:
20191029
tags:
模拟
description modelling:
给定一个数n,把n拆成若干个数相加,且这若干个数是回文串
输出:输出拆成了多少个数以及每一个数的大小
major steps to solve it:
把一个数随机拆成两个回文串显然十分不现实。
我们可以把一个按照它所能拆的最大回文串来拆:n=n1(回文串)+n2
若n2不是回文串,n2代替n的位置继续拆出新数,若n2也是回文串,结束,输出答案。
warnings:
n=10特判
AC code:
#include<bits/stdc++.h>
using namespace std;
char num[],sub[];
char ans[][];
char one[]="";
bool judge(char *s){//判断当前数字是否为回文数字
int lens = strlen(s);
for(int i = ;i<lens/;i++){
if(s[i]!=s[lens - i - ]){
return false;
}
}
return true;
}
void decrease(char *s1,char *s2)
{
int len1=strlen(s1);
int len2=strlen(s2);
int i=len1-,j=len2-,flag=;
while(i>=&&j>=) {
if(s1[i]-''-flag>=) {
s1[i]-=flag;
flag=;
}
else {
s1[i] = s1[i] + - flag;
flag = ;
}
if(s1[i]>=s2[j]) {
s1[i]=s1[i]-s2[j]+'';
}
else {
s1[i]=s1[i]+-s2[j]+'';
flag=;
}
i--,j--;
}
while(i>=&&flag) {
if(s1[i]-''>=flag) {
s1[i]-=flag;
flag=;
}
else {
s1[i]=s1[i]+-flag;
flag=;
}
i--;
}
int id=;
bool pre_0=true;
char tmp[];
memset(tmp,,sizeof(tmp));
for(int k=;k<len1;k++) {
if(s1[k]==''&&pre_0) continue;
if(s1[k]!=''&&pre_0) pre_0=false;
tmp[id++]=s1[k];
}
if(!id) {
tmp[id++]='';
}
tmp[id]='\0';
strcpy(s1,tmp);
}
void palindromic(char *s1,char *s2)
{
int len1=strlen(s1),len2;
if(len1==&&s1[]==''&&s1[]==''){
s2[]='';
s2[]='\0';
return;
}
if(len1&) len2=len1/+;
else len2=len1/;
for(int i=;i<len2;i++) {
s2[i]=s1[i];
}
s2[len2]='\0';
decrease(s2,one);
if(s2[]=='') {
s2[]='';
}
for(int i=len1-,j=;j<i;j++,i--) {
s2[i]=s2[j];
}
s2[len1]='\0';
}
int main()
{
//freopen("input.txt","r",stdin);
int T,kase=;
scanf("%d",&T);
while(T--) {
scanf("%s",num);
int id=;
while(num[]!=''&&id<) {
if(judge(num)) {
strcpy(ans[id++],num);
break;
}
memset(sub,,sizeof(sub));
palindromic(num,sub);
strcpy(ans[id++],sub);
decrease(num,sub);
}
printf("Case #%d:\n%d\n",kase++,id);
for(int i=;i<id;i++) {
printf("%s\n",ans[i]);
}
}
}
D - Ugly Problem HDU - 5920的更多相关文章
- 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(贪心+高精度)
题目链接: Ugly Problem Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Other ...
- Ugly Problem
Ugly Problem Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Spec ...
- hdu 5920(模拟)
Ugly Problem Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Tota ...
- Flow Problem HDU - 3549
Flow Problem HDU - 3549 Network flow is a well-known difficult problem for ACMers. Given a graph, yo ...
- Prime Ring Problem HDU - 1016 (dfs)
Prime Ring Problem HDU - 1016 A ring is compose of n circles as shown in diagram. Put natural number ...
- 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 5920 Ugly Problem 高精度减法大模拟 ---2016CCPC长春区域现场赛
题目链接 题意:给定一个很大的数,把他们分为数个回文数的和,分的个数不超过50个,输出个数并输出每个数,special judge. 题解:现场赛的时候很快想出来了思路,把这个数从中间分为两部分,当位 ...
随机推荐
- 统计学习方法与Python实现(三)——朴素贝叶斯法
统计学习方法与Python实现(三)——朴素贝叶斯法 iwehdio的博客园:https://www.cnblogs.com/iwehdio/ 1.定义 朴素贝叶斯法是基于贝叶斯定理与特征条件独立假设 ...
- MySQL数据库解决大数据量存储问题
转载自:https://www.cnblogs.com/ryanzheng/p/8334915.html 提问:如何设计或优化千万级别的大表?此外无其他信息,个人觉得这个话题有点范,就只好简单说下该如 ...
- Java连载54-两种单例模式、接口详解
一.单例模式分为两种: (1)饿汉式单例:在类加载阶段就创建了一个对象. (2)懒汉式单例:用对对象的时候才会创建对象.(连载53中例子就是懒汉式) 饿汉式举例: package com.bjpowe ...
- 阿里钉钉技术分享:企业级IM王者——钉钉在后端架构上的过人之处
本文引用了唐小智发表于InfoQ公众号上的“钉钉企业级IM存储架构创新之道”一文的部分内容,收录时有改动,感谢原作者的无私分享. 1.引言 业界的 IM 产品在功能上同质化较高,而企业级的 IM 产品 ...
- 21-django-pure-pagination分页
一.django-pure-pagination分页 github上的描述(django-pure-pagination provides advanced pagination features a ...
- java大数习题
大数加法,题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1002 import java.math.BigInteger; import java.ut ...
- Java描述设计模式(01):单例模式
本文源码:GitHub·点这里 || GitEE·点这里 一.单例模式 1.概念图解 单例设计模式定义:确保这个类只有一个实例,并且自动的实例化向系统提供这个对象. 2.样例代码 package co ...
- tcprstat和tcpstat性能监控
tcprstat分析服务的响应速度利器 tcprstat是percona用来监测mysql响应时间的.不过对于任何运行在TCP协议上的响应时间,都可以用. 下面是一个监控示例,监控分析mysql的 ...
- [转]UiPath实践经验总结(二)
本文转自:https://www.cnblogs.com/ybyebo/p/10086473.html 1. UI操作容易受到各种意外的干扰,因此应该缩短UI操作阶段的总体时间.而为了缩短 ...
- linux上下键,rlwrap来解决
需要安装两个包1.readline,配置好yum直接安装[root@test152 ~]# yum install readline*2.rlwrap这个下载连接当前有效,找了很多没找到有用的http ...