日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

这是一个沙雕题II(思维好题)

發布時間:2023/12/15 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 这是一个沙雕题II(思维好题) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

鏈接:https://ac.nowcoder.com/acm/contest/289/J
來源:牛客網

題目描述
因為gugugu非常喜歡9這個數字所以他希望把數字n變得末尾有盡可能多的9,不過他只能把n減小,且減小的數值不超過k,因為gugugu太菜了不會做這個題,所以需要你們幫他解答。
輸入描述:

多組數據輸入,第一行輸入一個整數n代表需要變換的數,和一個整數k代表最大能減少的數值。(1?≤?n?≤?1018,0?≤?k?<?n)

提示:OJ的測評機使用%lld輸出64位整型(即long long).若你寫代碼的系統為XP,在XP上運行程序測樣例時要改成%I64d才能正常輸出,但是提交到OJ上的時候必須改回%lld,因為OJ不是xp系統的。

輸出描述:
輸出以最大數量的9在末尾且滿足條件的數,如果有多個滿足條件請輸出最大的一個。
示例1
輸入
復制
127 30
4521 89
輸出
復制
99
4499

牛客上的題目真的挺鍛煉思維的哎。
就像這個題目,一開始真的一點思維也沒有。模擬也沒有想法。后來發現,要是想讓每一位后面有更多的9,只需要呢,在減數的時候,個位數比n的個位數多1,這樣就好了,這樣下去,每一位出來的都是9,只要不超過k,就可以一直減下去。
代碼如下:

#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #define ll long long using namespace std;ll n,k;int main() {while(scanf("%lld%lld",&n,&k)!=EOF){ll t;for(ll i=10;i<=n;i*=10){ll x=n%i+1;if(x<=k&&x!=i) t=x;//如果本來就是9,就不用管了else break;}printf("%lld\n",n-t);} }

努力加油a啊,(o)/~

總結

以上是生活随笔為你收集整理的这是一个沙雕题II(思维好题)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。