二分搜索找到最小的符合条件的数据
#include<stdio.h> int main() { long long n,s,l,r,mid,ans; scanf("%lld%lld",&n,&s); l=1,r=n,ans=0; while(l<=r) { mid=(r-l)/2+l; long long dig,sum; dig=mid; sum=0; while(dig) { sum+=dig%10; //计算各位之和 dig/=10; } if(mid-sum>=s) { ans=n-mid+1; //两数之差不小于s,有则记录,无则为零 r=mid-1; //避免死循环 } else l=mid+1; } printf("%lld",ans); return 0; }