[agc011e]increasing numbers

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[agc011e]increasing numbers相关的知识,希望对你有一定的参考价值。

?????????mit   clu   ??????   strlen   ??????   ace   include   pre   color   

?????????

????????????????????????????????????????????????????????????????????????????????????????????????“?????????”?????????1558,11,3,0?????????????????????10,20170312????????????

????????????N???????????????k??????N???????????????k?????????????????????

$1leq Nleq 10^{500000}$

?????????

???????????????????????????????????????????????????????????????????????????

??????“?????????”?????????1,1111,11111111????????????????????????1???????????????0?????????????????????

???N??????????????????K?????????????????????????????????$k=lceilfrac{K}{9} ceil$???

????????????????????????????????????????????????????????????$l$??????????????????$frac{(10^{l+1}-1)}{9}$???????????????

$N=sumlimits_{i=1}^{K}frac{(10^x)}{9}$?????????$x$???????????????????????????

$9N=sumlimits_{i=1}^{K}(10^x-1)$

$9N+K=sumlimits_{i=1}^{K}10^x$

??????????????????????????????????????????????????????????????????????????????????????????+1????????????????????????$9N+K$??????????????????$K$?????????????????????$K$?????????9????????????

????????????????????????????????????????????????????????????9?????????$K$????????????9????????????

??????????????????????????????N??????????????????k?????????????????????????????????????????????????????????????????????????????????break??????????????????$O(1)$???????????????$O(n^2)$??????

?????????

 

 1 #include<algorithm>
 2 #include<iostream>
 3 #include<cstring>
 4 #include<cstdio>
 5 #include<cmath>
 6 #include<queue>
 7 #define inf 2147483647
 8 #define eps 1e-9
 9 using namespace std;
10 typedef long long ll;
11 int n,tot,a[800001];
12 char s[500001];
13 void mul(int a[],int &n,int k){
14     int p=0;
15     tot=0;
16     for(int i=1;i<=n;i++){
17         p=a[i]*k+p;
18         a[i]=p%10;
19         tot+=a[i];
20         p/=10;
21     }
22     if(p)a[++n]=p;
23     tot+=p;
24 }
25 void add(int a[],int &n,int k){
26     int p=0;
27     tot-=a[1];
28     a[1]+=k;
29     p=a[1]/10;
30     a[1]%=10;
31     tot+=a[1];
32     for(int i=2;i<=n;i++){
33         tot-=a[i];
34         a[i]+=p;
35         p=a[i]/10;
36         a[i]%=10;
37         tot+=a[i];
38         if(!p)break;
39     }
40     if(p)a[++n]=p;
41     tot+=p;
42 }
43 int main(){
44     scanf("%s",s);
45     n=strlen(s);
46     for(int i=1;i<=n;i++){
47         a[i]=s[n-i]-???0???;
48     }
49     mul(a,n,9);
50     for(int i=1;i<=n;i++){
51         add(a,n,9);
52         if(tot%9==0&&i*9>=tot)return printf("%d",i),0;
53     }
54     return 0;
55 }

 

以上是关于[agc011e]increasing numbers的主要内容,如果未能解决你的问题,请参考以下文章

AGC011-E Increasing Numbers

[AGC 011 E]Increasing Numbers

AGC+FPGA基于FPGA的数字AGC自适应增益设计,应用在BPSK调制解调系统中

agc045_b 01 Unbalanced

AGC增长服务3-App Linking示例

agc045_c Range Set