zoukankan      html  css  js  c++  java
  • Gym-101915A Printing Books 模拟

    题面

    题意:给你N,X,   X表示这本书从X开始编号,每个X是几位数,计数器就加几,

            然后问你如果从X,开始编号,计数器为N的时候,翻了几页,不能刚好为N输出-1.

            (例如,5 99,答案为2,因为5位数需要,99 100 2+3==5,r如果是6,99则无解输出-1)

    题解:当然一段一段的减就行了,每一段长度一样的嘛,预处理10的15次方出来,然后减掉小于位数的,

             对于减了剩余的部分,每一个数都是相同位数的,所以用剩下的n mod位数,为0说明有解,不为0就肯定没解了啊!

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 #define lld long long 
     4 int T;
     5 lld f[17],n,x,ans;
     6 int main()
     7 {
     8     scanf("%d",&T);
     9     f[1]=10;
    10     for (int i=2;i<=16;i++) f[i]=f[i-1]*10;
    11     while (T--)
    12     {
    13         ans=0;
    14         scanf("%lld%lld",&n,&x);
    15         lld xx=x,i=0;
    16         while (xx) xx/=10,i++;
    17         while (n>=i*(f[i]-x))
    18         {
    19             n=n-(f[i]-x)*i;
    20             ans+=f[i]-x;
    21             x=f[i];
    22             i++; 
    23 
    24         }
    25         if (n%i==0) printf("%lld
    ",ans+n/i);else puts("-1");
    26     }
    27  } 
  • 相关阅读:
    java笔试之输出
    构造块和静态块[转]
    Java 对象和类
    StringBuffer
    基于bootstrap的表格数据展示
    弹窗式页面
    读取xml
    更新xml
    写XML
    遍历一个类的字段和值
  • 原文地址:https://www.cnblogs.com/qywhy/p/9741795.html
Copyright © 2011-2022 走看看