HDU5920【模拟】
来源:互联网 发布:中国房地产市场知乎 编辑:程序博客网 时间:2024/04/28 09:14
模拟题这种东西啊~就是自己读题,自己打,没有别的方法。。。贴份6000+b的code跑;
#include <bits/stdc++.h>using namespace std;//typedef long long LL;const int N=1e5+10;char s[N]; //输入串char tmp[N];//每次要处理的串;char t1[N]; //要处理的前半char t3[N];char t2[N]; //后半;//答案串,和答案数量char ans[55][N];int res;char jian[N];int cal(char *a, char *b)//a-b{ int jie = 0; int lena = strlen(a); int lenb = strlen(b); int i,j; for(i = lenb-1, j = lena-1; i >= 0 || j >= 0; i--,j--) { if(i >= 0) a[j] = a[j]-(b[i]+jie)+'0'; else a[j] = a[j]-jie; if(a[j] < '0') { a[j] += 10; jie = 1; } else jie = 0; } int k; for(int i = 0; i < lena; i++) { if(a[i] != '0') { k = i; break; } } int h = 0; for(int i = k; i < lena; i++) a[h++] = a[i]; if(!h) a[h++]='0'; a[h] = '\0'; strcpy(jian,a);}int main(){ char one[5]; strcpy(one,"1"); int cas=1; int T; scanf("%d",&T); while(T--) { scanf("%s",tmp); res=0; while(1) { int len=strlen(tmp); if(len==1) { strcpy(ans[res++],tmp); break; } if(len%2) //奇数 { char mid; int num1,num2,num3; num1=num2=num3=0; for(int i=0;i<len/2;i++) t3[num3++]=tmp[i]; for(int i=len/2-1;i>=0;i--) t1[num1++]=tmp[i]; mid=tmp[len/2]; for(int i=len/2+1;i<len;i++) t2[num2++]=tmp[i]; t1[num1]='\0'; t2[num2]='\0'; t3[num3]='\0'; int temp=strcmp(t2,t1); if(temp>0) { int zsq=0; for(int i=num1-1;i>=0;i--) ans[res][zsq++]=t1[i]; ans[res][zsq++]=mid; for(int i=0;i<num1;i++) ans[res][zsq++]=t1[i]; ans[res][zsq]='\0'; cal(tmp,ans[res]); res++; strcpy(tmp,jian); } else if(temp==0) { strcpy(ans[res],tmp); res++; break; } else { if(mid=='0') { cal(t3,one); if(t3[0]=='0') { strcpy(ans[res++],"1"); strcpy(ans[res++],"99"); break; } int zsq=0; int jian_len=strlen(jian); for(int i=0;i<jian_len;i++) ans[res][zsq++]=jian[i]; ans[res][zsq++]=mid; for(int i=jian_len-1;i>=0;i--) ans[res][zsq++]=jian[i]; ans[res][zsq]='\0'; cal(tmp,ans[res]); strcpy(tmp,jian); res++; } else { mid--; int zsq=0; for(int i=0;i<num3;i++) ans[res][zsq++]=t3[i]; ans[res][zsq++]=mid; for(int i=num3-1;i>=0;i--) ans[res][zsq++]=t3[i]; ans[res][zsq]='\0'; cal(tmp,ans[res]); strcpy(tmp,jian); res++; } } } else //偶数 { int num1,num2,num3; num1=num2=num3=0; for(int i=0;i<len/2;i++) t3[num3++]=tmp[i]; for(int i=len/2-1;i>=0;i--) t1[num1++]=tmp[i]; for(int i=len/2;i<len;i++) t2[num2++]=tmp[i]; t1[num1]='\0'; t2[num2]='\0'; t3[num3]='\0'; int temp=strcmp(t2,t1); if(temp>0) { int zsq=0; for(int i=num1-1;i>=0;i--) ans[res][zsq++]=t1[i]; for(int i=0;i<num1;i++) ans[res][zsq++]=t1[i]; ans[res][zsq]='\0'; cal(tmp,ans[res]); strcpy(tmp,jian); res++; } else if(temp==0) { strcpy(ans[res],tmp); res++; break; } else { cal(t3,one); if(jian[0]=='0') { strcpy(ans[res++],"1"); strcpy(ans[res++],"9"); break; } int zsq=0; int jian_len=strlen(jian); for(int i=0;i<jian_len;i++) ans[res][zsq++]=jian[i]; for(int i=jian_len-1;i>=0;i--) ans[res][zsq++]=jian[i]; ans[res][zsq]='\0'; cal(tmp,ans[res]); strcpy(tmp,jian); res++; } } } printf("Case #%d:\n",cas++); printf("%d\n",res); for(int i=0;i<res;++i) printf("%s\n",ans[i]); } return 0;}
0 0
- HDU5920【模拟】
- HDU5920(字符串模拟)
- hdu5920(字符串模拟)
- HDU5920 Ugly Problem(模拟,字符串)
- HDU5920
- HDU5920 Ugly Problem (大模拟)
- hdu5920-Ugly Problem(强行模拟)
- HDU5920-Ugly Problem
- hdu5920 Ugly Problem(构造)
- 大数--hdu5920 Ugly Problem
- HDU5920 Ugly Problem(高精度)
- hdu5920 Ugly Problem(构造)
- hdu5920 Ugly Problem 回文串+高精度
- hdu5920 Ugly Problem【贪心+高精度减法】
- 模拟
- 模拟
- 模拟
- 模拟
- windows下 composer的错误
- UVA1515 pool ,玄学的最小割
- 使用WKWebView替换UIWebView
- chrome扩展——bilibili视频封面获取器
- seo 对于一个网站来说很重要 简单解释一下
- HDU5920【模拟】
- leetcode submission/20161004(Valid Perfect Square)
- 编程环境
- HDU 5919 Sequence II(主席树)
- 让website支持C# 6.0
- java中用new创建一个对象的过程解析
- HDU5918【KMP大法好,虽然我不会】
- Caffe安装
- 学习QT历程2016.10.04