zoukankan      html  css  js  c++  java
  • 【CF468C】Hack it!(构造)

    点此看题面

    • 定义(f(x))为一个十进制数(x)所有数码的和。
    • 给定(a),求构造一对(l,r(lle r)),满足(sum_{i=l}^rf(i)equiv0(mod a))
    • (1le ale10^{18})

    构造

    考虑对于任意(x<10^{18}),都有(f(x+10^{18})=f(x)+1)(应该是显然,就相当于在开头添了一个(1))。

    所以说,如果我们能求出(sum_{i=0}^{10^{18}-1}f(i)equiv t(mod a)),那么只要给它左右端点同时加上(a-t),根据之前的结论就能使得左式的值恰好加上(a-t)

    因此,构造出的(sum_{i=a-t}^{10^{18}-1+a-t}f(i)equiv0(mod a))

    而要求(t)是非常简单的,就是考虑每一位共有(9)种选法,总和为(45),而位与位之间的选择独立,因此每一位的每种选法都能出现(10^{17})次。

    综上,我们有:

    [sum_{i=0}^{10^{18}-1}=18 imes 45 imes10^{17}=81 imes10^{18} ]

    所以这道题就做完了。

    代码:(O(1))

    #include<bits/stdc++.h>
    #define Tp template<typename Ty>
    #define Ts template<typename Ty,typename... Ar>
    #define Reg register
    #define RI Reg int
    #define Con const
    #define CI Con int&
    #define I inline
    #define W while
    #define LL long long
    using namespace std;
    int main()
    {
    	LL a;scanf("%lld",&a);LL x=(LL)1e18,y=x*9%a*9%a;return printf("%lld %lld
    ",a-y,x-1+a-y),0;//直接构造
    }
    
    败得义无反顾,弱得一无是处
  • 相关阅读:
    JS中的constructor、prototype、__proto__的要点理解
    call、apply、bind的源码模拟
    js中的继承方式
    IPV6
    java8 instant localDateTime
    FileInputFormat 的实现之TextInputFormat
    Git服务器,仓库的hook监控
    Linux 开机启动图形界面,shell界面
    java操作Hbase
    Linux 下安装 storm
  • 原文地址:https://www.cnblogs.com/chenxiaoran666/p/CF468C.html
Copyright © 2011-2022 走看看