magic number
生活随笔
收集整理的這篇文章主要介紹了
magic number
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
http://oj.acm.zstu.edu.cn/JudgeOnline/problem.php?cid=4034&pid=7
C++版本一
/* *@Author: STZG *@Language: C++ */ #include <bits/stdc++.h> #include<iostream> #include<algorithm> #include<cstdlib> #include<cstring> #include<cstdio> #include<string> #include<vector> #include<bitset> #include<queue> #include<deque> #include<stack> #include<cmath> #include<list> #include<map> #include<set> //#define DEBUG #define RI register int using namespace std; typedef long long ll; //typedef __int128 lll; const int N=100000+10; const int MOD=1e9+7; const double PI = acos(-1.0); const double EXP = 1E-8; const int INF = 0x3f3f3f3f; int t,n,m,k,q,ans,l,r,s; int a; char str; int f(int x){int ans=x;while(x){ans-=x%10;x/=10;}return ans; } int main() { #ifdef DEBUGfreopen("input.in", "r", stdin);//freopen("output.out", "w", stdout); #endifwhile(~scanf("%d%d%d",&l,&r,&s)){ans=0;t=l;while(l<=r){int mid=(l+r)>>1;if(f(mid)<s){ans=mid;l=mid+1;}else{r=mid-1;}}if(ans!=0)cout << ans-t+1 << endl;elsecout<<0<<endl;}//cout << "Hello world!" << endl;return 0; }C++版本二
題解:因為S小于1e9,所以最大符合條件應該略大于(s+9*9),而[L,S]范圍內應該全部滿足,所以從[S+1,S+200]遍歷再加上S-L+1。
#include<stdio.h> #include<math.h> #include<algorithm> #include<string.h> using namespace std;int f(int n){int ans=0;while(n){ans=ans+n%10;n/=10;}return ans; }int main(){int l,r,s,swa;while(~scanf("%d%d%d",&l,&r,&s)){if(l>r){swa=l;l=r;r=swa;}if(s>=r){printf("%d\n",r-l+1);continue;}int ans=0,maxn=s+200,i;if(s>l){ans=s-l+1;l=s+1;}if(r<maxn)maxn=r;for(i=l;i<=maxn;i++)if(i-f(i)<s)ans++;printf("%d\n",ans);}return 0; }?
總結
以上是生活随笔為你收集整理的magic number的全部內容,希望文章能夠幫你解決所遇到的問題。