标签:设计 一起 sub 题目 com tor bottom ems mem
1 ≤ T ≤ 100, 1 ≤ n ≤ 10100000
? 1, T组数据的数字的十进制表示长度总和不超过1000000
每行一个整数 m 第 i 行表示第 i 个数所对应的“最邻近二数”
5 42 11 1 2018 13751
42 8 0 2020 8888
所有的数据从第一个奇数开始考虑,若奇数就在最后一位,那么ans[k-1]-- 全部输出。
若在之前,呢么与下一位一起考虑,若为x4的形式,则继续下一位考虑,因为x4-(x-1)4==(x+1)4-x4==6
若下一位小于4,a[pos]--,且之后全为8,若后一位大于4,则ans[pos]++,之后全为0.注意若ans[pos]==9 只能减
同时防止首元素为0.
#include <iostream> #include <algorithm> #include <cstring> #include <cstdio> #include <vector> #include <queue> #include <stack> #include <cstdlib> #include <iomanip> #include <cmath> #include <cassert> #include <ctime> #include <map> #include <set> using namespace std; #pragma comment(linker, "/stck:1024000000,1024000000") #define lowbit(x) (x&(-x)) #define max(x,y) (x>=y?x:y) #define min(x,y) (x<=y?x:y) #define MAX 100000000000000000 #define MOD 1000 #define pi acos(-1.0) #define ei exp(1) #define PI 3.1415926535897932384626433832 #define ios() ios::sync_with_stdio(true) #define INF 0x3f3f3f3f #define mem(a) (memset(a,0,sizeof(a))) #define ll long long char a[100006]; int ans[100006],n,k; int solve(int now) { if(ans[now]<4 || (now==k-1 && ans[now]==4)) return 0; else if(ans[now]>4) return 1; else return solve(now+1); } int main() { scanf("%d",&n); while(n--) { scanf("%s",&a); k=strlen(a); for(int i=0;i<k;i++) ans[i]=(int)(a[i]-‘0‘); int pos=k; for(int i=0;i<k;i++) { if(ans[i]&1){pos=i;break;} } if(pos==k) printf("%s\n",a); else if(pos==k-1) { for(int i=0;i<k-1;i++) printf("%d",ans[i]); printf("%d\n",--ans[k-1]); } else if(ans[pos]==9) { for(int i=0;i<pos;i++) printf("%d",ans[i]); printf("%d",--ans[pos]); for(int i=pos+1;i<k;i++) printf("8"); printf("\n"); } else { int flag=solve(pos+1); if(!flag) { for(int i=0;i<pos;i++) printf("%d",ans[i]); ans[pos]--; if(!(!pos && !ans[pos])) printf("%d",ans[pos]); for(int i=pos+1;i<k;i++) printf("8"); printf("\n"); } else { for(int i=0;i<pos;i++) printf("%d",ans[i]); printf("%d",++ans[pos]); for(int i=pos+1;i<k;i++) printf("0"); printf("\n"); } } } return 0; }
二数 (埃森哲杯第十六届上海大学程序设计联赛春季赛暨上海高校金马五校赛)
标签:设计 一起 sub 题目 com tor bottom ems mem
原文地址:https://www.cnblogs.com/shinianhuanniyijuhaojiubujian/p/8855936.html