Luke Skywalker gave Chewbacca an integer number x. Chewbacca isn't good at numbers but he loves inverting digits in them. Inverting digitt means replacing it with digit 9?-?t.
Help Chewbacca to transform the initial number x to the minimum possiblepositive number by inverting some (possibly, zero) digits. The decimal rePResentation of the final number shouldn't start with a zero.
InputThe first line contains a single integer x(1?≤?x?≤?1018) — the number that Luke Skywalker gave to Chewbacca.
OutputPrint the minimum possible positive number that Chewbacca can obtain after inverting some digits. The number shouldn't contain leading zeroes.
ExamplesInput27Output22Input4545Output4444題目大意:
給你一個LL范圍內的數字X,每一位子上的數字t都可以替換為9-t,讓你輸出最小的,不含有前導0的正整數,不能以0開頭。
思路:
貪心角度很好想,ans【i】=min(a【i】,9-a【i】);
一開始讀題沒看到正整數三個字,那么990的ans我認為是0.Wa一發、
后來發現了,那么990的ans我認為是9.又Wa一發、
哦,結果要求沒有0開頭啊。那么ans==900.
這是一道A題.恩.滿滿的Hack點,我不禁開始幻想當時打這場比賽的小伙伴們會Hack多少發。
Ac代碼:
#include<stdio.h>#include<string.h>#include<iostream>using namespace std;#define ll __int64char a[200];int ans[200];ll output;int n;int main(){ while(~scanf("%s",a)) { n=strlen(a); output=0; int f=0; for(int i=0;i<n;i++) { ans[i]=min(a[i]-'0',9-a[i]+'0'); if(ans[i]!=0&&f==0)f=1; if(ans[i]==0&&f==0)ans[i]=max(a[i]-'0',9-a[i]+'0'),f=1; } for(int i=0;i<n;i++) { output=output*10+ans[i]; } printf("%I64d/n",output); }}
新聞熱點
疑難解答