题目大意:
  给你一个数$n(n\leq10^1000)$,定义一个数是“美丽数”当且仅当这个数各个数位上的数奇偶性不同。
  求最接近$n$的“美丽数”,若有多个,则依次输出。

思路:
  贪心+高精度。
  首先找出$n$的第一个不符合要求的数位,从这一位开始贪心。
  后面几位要么是'8''9'交替(小于$n$的最大的“美丽数”),要么是'0''1'交替(大于$n$的最小的“美丽数”)。
  然后高精度减法减一下,比较哪个更接近即可。

 #include<cstdio>
#include<cstring>
const int LEN=;
char s[LEN],a[LEN],b[LEN],c[LEN],d[LEN],tmp[LEN];
int len;
inline void treat(char s[]) {
for(register int i=;i<len;i++) {
s[i]^='';
}
}
int main() {
gets(s);
len=strlen(s);
treat(s);
a[]=b[]=s[];
for(register int i=;i<len;i++) {
if((s[i-]&)^(s[i]&)) {
a[i]=b[i]=s[i];
} else {
if(s[i]!=) {
a[i]=s[i]-;
for(register int j=i+;j<len;j++) {
a[j]=a[j-]&?:;
}
}
if(s[i]!=) {
b[i]=s[i]+;
for(register int j=i+;j<len;j++) {
b[j]=b[j-]&?:;
}
}
if(s[i]==) {
treat(b);
puts(b);
return ;
}
if(s[i]==) {
treat(a);
puts(a);
return ;
}
for(register int j=len-;j>=i;j--) {
tmp[j]=s[j];
}
for(register int j=len-;j>=i;j--) {
if((signed char)tmp[j]<) {
tmp[j]+=;
tmp[j-]--;
}
c[j]+=tmp[j]-a[j];
if((signed char)c[j]<) {
c[j]+=;
tmp[j-]--;
}
}
for(register int j=len-;j>=i;j--) {
tmp[j]=b[j];
}
for(register int j=len-;j>=i;j--) {
if((signed char)tmp[j]<) {
tmp[j]+=;
tmp[j-]--;
}
d[j]+=tmp[j]-s[j];
if((signed char)d[j]<) {
d[j]+=;
tmp[j-]--;
}
}
treat(a);
treat(b);
for(register int j=i;j<len;j++) {
if(c[j]<d[j]) {
puts(a);
return ;
}
if(c[j]>d[j]) {
puts(b);
return ;
}
}
printf("%s %s\n",a,b);
return ;
}
}
return ;
}

[COCI2015]ZGODAN的更多相关文章

  1. BZOJ 3881: [Coci2015]Divljak [AC自动机 树链的并]

    3881: [Coci2015]Divljak 题意:添加新文本串,询问某个模式串在多少种文本串里出现过 模式串建AC自动机,考虑添加一个文本串,走到的节点记录下来求树链的并 方法是按dfs序排序去重 ...

  2. BZOJ3810: [Coci2015]Stanovi

    3810: [Coci2015]Stanovi Description Input 输入一行,三个整数,n, m, k   Output 输出一个数,表示最小不满意度.   Sample Input ...

  3. [COCI2015]COCI

    [COCI2015]COCI 题目大意: 有\(n(n\le5\times10^5)\)个人比赛,比赛总共进行\(3\)轮,每一轮得分为\([0,650]\)内的整数.现在已经得知每个人前两轮的成绩. ...

  4. [Coci2015]Kamp

    Description 一颗树n个点,n-1条边,经过每条边都要花费一定的时间,任意两个点都是联通的. 有K个人(分布在K个不同的点)要集中到一个点举行聚会. 聚会结束后需要一辆车从举行聚会的这点出发 ...

  5. BZOJ 3881: [Coci2015]Divljak

    3881: [Coci2015]Divljak Time Limit: 20 Sec  Memory Limit: 768 MBSubmit: 553  Solved: 176[Submit][Sta ...

  6. 【BZOJ3881】[Coci2015]Divljak fail树+树链的并

    [BZOJ3881][Coci2015]Divljak Description Alice有n个字符串S_1,S_2...S_n,Bob有一个字符串集合T,一开始集合是空的. 接下来会发生q个操作,操 ...

  7. 【BZOJ3743】[Coci2015]Kamp 树形DP

    [BZOJ3743][Coci2015]Kamp Description 一颗树n个点,n-1条边,经过每条边都要花费一定的时间,任意两个点都是联通的. 有K个人(分布在K个不同的点)要集中到一个点举 ...

  8. 【BZOJ3745】[Coci2015]Norma cdq分治

    [BZOJ3745][Coci2015]Norma Description Input 第1行,一个整数N: 第2~n+1行,每行一个整数表示序列a. Output 输出答案对10^9取模后的结果. ...

  9. bzoj3743 [Coci2015]Kamp 常州模拟赛d6t2

    3743: [Coci2015]Kamp Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 484  Solved: 229[Submit][Status ...

随机推荐

  1. Python学习4,字符串

    字符串这个东西主要靠记,多打打就好了. _author_ = "Happyboy" name = "my \tname is happyboy and i am 66 y ...

  2. java初学2

    1.数组操作类Arrays与System public static void arraycopy(Object src, int srcPos, Object dest,int destPos,in ...

  3. 基于vue 2.X和高德地图的vue-amap组件获取经纬度

    今天我就讲了一下怎么通过vue和高德地图开发的vue-amap组件来获取经纬度. 这是vue-amap的官网文档:https://elemefe.github.io/vue-amap/#/ 这是我的码 ...

  4. 二分查找树按照key值划分

    #include <iostream>#include <vector>#include <algorithm>#include <string>#in ...

  5. 【ZBH选讲·模数和】

    [问题描述]你是能看到第二题的friends呢.——laekovHja和Yjq在玩游戏,这个游戏中Hja给了Yjq两个数,希望Yjq找到一些非负整数使得这些数的和等于n,并且所有数模maaaaaaaa ...

  6. java中的URLEncoder.encode对应JS中用decodeURIComponent,js和java编码,解码

    用get请求传中文,经常搞到乱码,这几天搞搞这个东西,总结一下,以方便以后处理这类的问题. Java代码中的URLEncoder.encode方法和JS的encodeURIComponent功能差不多 ...

  7. TCP面试题之滑动窗口原理

    TCP 滑动窗口 作用: 1. 提供TCP可靠性:对发送的数据进行确认 2. 流量控制:窗口大小随链路变化 一.TCP窗口机制 TCP中窗口大小是指tcp协议一次传输多少个数据.因为TCP是一个面向连 ...

  8. Cisco IPC Emergency Responder Error

    Upon startup of the newer Cisco IP Communicator clients (especially on Windows Vista/7), sometimes y ...

  9. MySQL 5.7主从复制与主主复制实现细节分析

    0.简介: MySQL作为世界上使用最为广泛的数据库之一,免费是其原因之一.但不可忽略的是它本身的功能的确很强大.随着技术的发展,在实际的生产环境中,由单台MySQL数据库服务器不能满足实际的需求.此 ...

  10. JSP中的:request.getScheme()+"://"+request.getServerName()+":"+request.getServer

    String path = request.getContextPath();  String basePath = request.getScheme()+"://"+reque ...