mirror of
https://github.com/Kiritow/OJ-Problems-Source.git
synced 2024-03-22 13:11:29 +08:00
Create 5920_dgutfly.cpp
From http://www.cnblogs.com/dgutfly/p/5930790.html
This commit is contained in:
parent
00e475dc00
commit
125db1cc44
70
HDOJ/5920_dgutfly.cpp
Normal file
70
HDOJ/5920_dgutfly.cpp
Normal file
|
@ -0,0 +1,70 @@
|
|||
#include <iostream>
|
||||
#include <cstdio>
|
||||
#include <cstring>
|
||||
#include <cmath>
|
||||
#include <algorithm>
|
||||
#include <string>
|
||||
#include <cstdlib>
|
||||
#include <vector>
|
||||
#include <set>
|
||||
#include <map>
|
||||
using namespace std;
|
||||
const double eps=1e-8;
|
||||
int len;
|
||||
//大数乘法
|
||||
void subtract(char *a,char *b,char *c)
|
||||
{
|
||||
for(int i=len-1;i>=0;i--)
|
||||
{
|
||||
c[i]=a[i]-b[i]+'0';
|
||||
if(c[i]<'0')c[i]+=10,a[i-1]--;
|
||||
}
|
||||
}
|
||||
|
||||
char str[2][1005],sub[50][1005];
|
||||
int main()
|
||||
{
|
||||
int i,j,k,n;
|
||||
scanf("%d",&n);getchar();
|
||||
for(int h=1;h<=n;h++)
|
||||
{
|
||||
memset(sub,'0',sizeof(sub));
|
||||
gets(str[0]);
|
||||
len=strlen(str[0]);
|
||||
int old=1,now=0;
|
||||
int cnt=0;
|
||||
for(i=0;str[now][i];)//前置0到末尾,整个数就是0
|
||||
{
|
||||
old^=1,now^=1;//滚动数组
|
||||
if(!strcmp(str[old]+i,"10"))//10=9+1
|
||||
{
|
||||
sub[cnt][0]='9';sub[cnt][1]=0;cnt++;
|
||||
sub[cnt][0]='1';sub[cnt][1]=0;cnt++;
|
||||
break;
|
||||
}
|
||||
for(j=i;j<=len-1-j+i && str[old][j]<=str[old][len-1-j+i];j++);
|
||||
strcpy(sub[cnt],str[old]);
|
||||
if(j<len-1-j+i)//对折后有小于的,就只能取较小的回文数
|
||||
{
|
||||
sub[cnt][(i+len-1)/2]--;
|
||||
for(j=(i+len-1)/2;j>=0 && sub[cnt][j]<'0';j--)sub[cnt][j]+=10,sub[cnt][j-1]--;
|
||||
}
|
||||
for(j=0;sub[cnt][j]=='0';j++);//去前导0
|
||||
for(k=j;k<=len-1-k+j;k++)sub[cnt][len-1-k+j]=sub[cnt][k];//根据前半串对折构造后半串
|
||||
sub[cnt][len]=0;
|
||||
subtract(str[old],sub[cnt],str[now]);
|
||||
for(;str[now][i]=='0';i++);
|
||||
cnt++;
|
||||
}
|
||||
printf("Case #%d:\n%d\n",h,cnt);
|
||||
for(i=0;i<cnt;i++)
|
||||
{
|
||||
char *s;
|
||||
for(s=sub[i];*s=='0';s++);
|
||||
puts(s);
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
ugly problem
|
Loading…
Reference in New Issue
Block a user