做网站怎么插入表格/seo课
题目链接
思路很好想,但是我这死脑筋就是用代码实现不了!!!太弱了…
思路就是,先求出最初的 x 由几位数组成,并算出比该位数字最大的数还要大1的数(y),然后算出x—y之间一共有多少(z)位。如果比n小,则用while循环,直到 z 小于n结束循环;否则,如果剩下的 n % k !=0 则输出 -1 ,等于零就输出 ans + n/k。
代码如下
#include <bits/stdc++.h>
#define ll long long
using namespace std;int main()
{ll n;ll x;int t;cin>>t;ll f[16];f[1]=10;for(int i=2; i<=15; i++){f[i] = f[i-1]*10;}while(t--){cin>>n>>x;ll m=x,k=1;while(m){m/=10;if(m>0)k++;}ll ans=0,flag=0;while(k*(f[k]-x)<=n){n-=k*(f[k]-x);ans+=(f[k]-x);x=f[k];k++;}if(n%k==0){cout<<ans+n/k<<endl;}else{cout<<-1<<endl;}}return 0;
}
代码参考于https://www.cnblogs.com/qywhy/p/9741795.html