[COCI2015]ZGODAN

題目大意:
  給你一個數$n(n\leq10^1000)$,定義一個數是“美麗數”當且僅當這個數各個數位上的數奇偶性不同。
  求最接近$n$的“美麗數”,若有多個,則依次輸出。

思路:
  貪心+高精度。
  首先找出$n$的第一個不符合要求的數位,從這一位開始貪心。
  后面幾位要么是'8''9'交替(小于$n$的最大的“美麗數”),要么是'0''1'交替(大于$n$的最小的“美麗數”)。
  然后高精度減法減一下,比較哪個更接近即可。

 1 #include<cstdio>
 2 #include<cstring>
 3 const int LEN=1002;
 4 char s[LEN],a[LEN],b[LEN],c[LEN],d[LEN],tmp[LEN];
 5 int len;
 6 inline void treat(char s[]) {
 7     for(register int i=0;i<len;i++) {
 8         s[i]^='0';
 9     }
10 }
11 int main() {
12     gets(s);
13     len=strlen(s);
14     treat(s);
15     a[0]=b[0]=s[0];
16     for(register int i=1;i<len;i++) {
17         if((s[i-1]&1)^(s[i]&1)) {
18             a[i]=b[i]=s[i];
19         } else {
20             if(s[i]!=0) {
21                 a[i]=s[i]-1;
22                 for(register int j=i+1;j<len;j++) {
23                     a[j]=a[j-1]&1?8:9;
24                 }
25             }
26             if(s[i]!=9) {
27                 b[i]=s[i]+1;
28                 for(register int j=i+1;j<len;j++) {
29                     b[j]=b[j-1]&1?0:1;
30                 }
31             }
32             if(s[i]==0) {
33                 treat(b);
34                 puts(b);
35                 return 0;
36             }
37             if(s[i]==9) {
38                 treat(a);
39                 puts(a);
40                 return 0;
41             }
42             for(register int j=len-1;j>=i;j--) {
43                 tmp[j]=s[j];
44             }
45             for(register int j=len-1;j>=i;j--) {
46                 if((signed char)tmp[j]<0) {
47                     tmp[j]+=10;
48                     tmp[j-1]--;
49                 }
50                 c[j]+=tmp[j]-a[j];
51                 if((signed char)c[j]<0) {
52                     c[j]+=10;
53                     tmp[j-1]--;
54                 }
55             }
56             for(register int j=len-1;j>=i;j--) {
57                 tmp[j]=b[j];
58             }
59             for(register int j=len-1;j>=i;j--) {
60                 if((signed char)tmp[j]<0) {
61                     tmp[j]+=10;
62                     tmp[j-1]--;
63                 }
64                 d[j]+=tmp[j]-s[j];
65                 if((signed char)d[j]<0) {
66                     d[j]+=10;
67                     tmp[j-1]--;
68                 }
69             }
70             treat(a);
71             treat(b);
72             for(register int j=i;j<len;j++) {
73                 if(c[j]<d[j]) {
74                     puts(a);
75                     return 0;
76                 }
77                 if(c[j]>d[j]) {
78                     puts(b);
79                     return 0;
80                 }
81             }
82             printf("%s %s\n",a,b);
83             return 0;
84         }
85     }
86     return 0;
87 }

?

轉載于:https://www.cnblogs.com/skylee03/p/8420960.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/255505.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/255505.shtml
英文地址,請注明出處:http://en.pswp.cn/news/255505.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

OpenCV學習筆記(三)——Mat,圖像的新容器

自從版本2.0&#xff0c;OpenCV采用了新的數據結構&#xff0c;用Mat類結構取代了之前用extended C寫的cvMat和lplImage&#xff0c;更加好用啦&#xff0c;最大的好處就是更加方便的進行內存管理&#xff0c;對寫更大的程序是很好的消息。 需要注意的幾點&#xff1a;1. Mat的…

jq實現事件委托

事件委托首 頁產品展示公司簡介關于我們聯系我們轉載于:https://www.cnblogs.com/haley168/p/eventTarget.html

【python數字信號處理】——scipy庫設計濾波器(IIR為例)、繪制濾波器頻譜響應、IIR濾波器濾波、讀寫wav音頻文件

目錄 一、參考文獻 1、scipy接口 2、scipy庫介紹+IIR濾波器設計(含GUI)+繪制頻譜響應

關于SQL查詢效率,100w數據,查詢只要1秒

原文:關于SQL查詢效率&#xff0c;100w數據&#xff0c;查詢只要1秒1.關于SQL查詢效率&#xff0c;100w數據&#xff0c;查詢只要1秒&#xff0c;與您分享:機器情況p4: 2.4內存: 1 Gos: windows 2003數據庫: ms sql server 2000目的: 查詢性能測試,比較兩種查詢的性能SQL查詢效…

OpenCV學習筆記(五十四)——概述FaceRecognizer人臉識別類contrib

在最新版的2.4.2中&#xff0c;文檔的更新也是一大亮點&#xff0c;refrence manual擴充了200多頁的內容&#xff0c;添加了contrib部分的文檔。contrib就是指OpenCV中新添加的模塊&#xff0c;但又不是很穩定&#xff0c;可以認為是一個雛形的部分。這次結合refman的閱讀&…

【調試】Linux下超強內存檢測工具Valgrind

【調試】Linux下超強內存檢測工具Valgrind 內容簡介 Valgrind是什么&#xff1f;Valgrind的使用Valgrind詳細教程1. Valgrind是什么&#xff1f; Valgrind是一套Linux下&#xff0c;開放源代碼&#xff08;GPLV2&#xff09;的仿真調試工具的集合。Valgrind由內核&#xff08;c…

【python學習】——讀取csv文件

file_name rD:\ParttimeJobs\MinistConfiguration\datas\mnist_train.csv # 數據集為42000張帶標簽的28x28手寫數字圖像y []x []y_t []x_t []with open(file_name, r) as f:reader csv.reader(f)header_row next(reader)# print(header_row)for row in reader:if np.ra…

機器學習實戰(python)-Ch02KNN-Notes

Chapter2 KNN 1.numpy.tile函數 格式&#xff1a;tile&#xff08;A,reps&#xff09; * A&#xff1a;array_like * 輸入的array * reps&#xff1a;array_like * A沿各個維度重復的次數 舉例&#xff1a;A[1,2] 1. tile(A,2) 結果&#xff1a;[1,2,1,2] 2. tile(A,(2,3)) 結果…

猜1-10的數字python腳本

#!/usr/bin/python#coding:utf-8import randomnumrandom.randint(1,10)while True:caiint(raw_input(請輸入隨機數字:))if cai num:print 猜對了exit()elif cai > num:print 猜大了else:print 猜小了非交互式的cp腳本#!/usr/bin/python#coding:utf-8import sysfile1sys.arg…

慣量匹配和最佳傳動比

慣量是剛體繞軸轉動慣性的度量&#xff0c;轉動慣量是表征剛體轉動慣性大小的物理量。它是伺服選型的重要標準&#xff0c;如果慣量匹配不好&#xff0c;會導致電機運行不穩定。如小慣量電機制動性能好&#xff0c;運行反應速度快&#xff0c;適用于輕負載、高速定位的環境;而中…

【pyqt5學習】——滑動條的使用slider

1、獲取滑動條當前值: 滑動條名稱.value() self.threshold1 self.horizontalSlider.value() self.threahold2 self.horizontalSlider_2.value() 2、滑動條值改變信號綁定槽函數 滑動條名稱.valueChanged.connect(槽函數&#xff09; # 滑條值變化 self.horizontalSlider.valu…

hibernate多對一單向外鍵

hibernate多對一單向外鍵&#xff1a; 描述&#xff1a; 轉載于:https://www.cnblogs.com/blogofwyl/p/5402197.html

Spring在bean配置文件中定義電子郵件模板

在上一篇Spring電子郵件教程&#xff0c;硬編碼的所有電子郵件屬性和消息的方法體中的內容&#xff0c;這是不實際的&#xff0c;應予以避免。應該考慮在Spring bean 配置文件中定義電子郵件模板。1.Spring的郵件發件人Java類使用 Spring的MailSender接口發送電子郵件&#xff…

斐波那契數列規律的計算。

斐波那契數列就是某一個數&#xff0c;總是前兩個數之和&#xff0c;比如0&#xff0c;1&#xff0c;1&#xff0c;2&#xff0c;3&#xff0c;5&#xff0c;8。由于輸出是一串數字&#xff0c;可以用列表的結構存儲。開始時&#xff0c;列表中有兩個值&#xff0c;即0&#xf…

【PyQt5學習】——顏色面板使用(QcolorDialog)

from PyQt5.QtGui import * from PyQt5.QtCore import * from PyQt5.QtWidgets import * BB = QDialogButtonBox# 顏色窗口 class ColorDialog(QColorDialog):def __init__(self, parent=None):super(ColorDialog, self).__init__(parent)self.setOption(QColorDialog.ShowAlph…

PropertyPlaceholderConfigurer實現配置文件讀取

PropertyPlaceholderConfigurer實現配置文件讀取 PropertyPlaceholderConfigurer類的主要的用法是將BeanFactory里定義的內容放在一個.properties的文件中. PropertyPlaceholderConfigurer是個bean工廠后置處理器的實現&#xff0c;也就是BeanFactoryPostProcessor接口的一個實…

算法練習5---快速排序Java版

基本思想&#xff1a;通過一趟排序將要排序的數據分割成獨立的兩部分&#xff0c;其中一部分的所有數據都比另外一部分的所有數據都要小&#xff0c;然后再按此方法對這兩部分數據分別進行快速排序&#xff0c;整個排序過程可以遞歸進行&#xff0c;以此達到整個數據變成有序序…

OPENCV回調函數

OPENCV回調函數 回調函數 回調函數就是一個通過函數指針調用的函數。如果你把函數的指針&#xff08;地址&#xff09;作為參數傳遞給另一個函數&#xff0c;當這個指針被用來調用其所指向的函數時&#xff0c;我們就說這是回調函數。回調函數不是由該函數的實現方法直接調用…

PostCSS自學筆記(二)【番外篇二】

圖解PostCSS的插件執行順序 文章其實是一系列的早就寫完了. 才發現忘了發在SegmentFault上面, 最早發布于https://gitee.com/janking/Inf... 這次我繼續研究PostCSS的插件的執行順序。 之前有研究過做過假設&#xff0c;在插件列表中&#xff0c;PostCSS的插件執行順序自上而下…

【Python學習】——實現文本的朗讀(pyttsx3)

import pyttsx3engine = pyttsx3.init() engine.say(三角形)engine.runAndWait() 1、導入第三方庫 import pyttsx32、創建朗讀器 engine = pyttsx3.init() 3、輸入需要朗讀的文本 engine.say(三角形) 4、開始朗讀并且發聲(這一步不能少,不然沒有聲音) engine.runAndWait() 參…