zoukankan      html  css  js  c++  java
  • 被3整除

    题目描述

    小Q得到一个神奇的数列: 1, 12, 123,...12345678910,1234567891011...。

    并且小Q对于能否被3整除这个性质很感兴趣。

    小Q现在希望你能帮他计算一下从数列的第l个到第r个(包含端点)有多少个数可以被3整除。

    输入描述:

    输入包括两个整数l和r(1 <= l <= r <= 1e9), 表示要求解的区间两端。

    输出描述:

    输出一个整数, 表示区间内能被3整除的数字个数。
    示例1

    输入

    复制
    2 5

    输出

    3
    题解:

    一个数所有位数的和相加如果等于3的倍数,则这个整数是3的倍数。
    这里第一个数是1,第二个是12,第三个是123……第n个数是123……(n-1)n,
    各个位之和可以算成(i+1)*i/2,类似于等差数列求和的公式
    (之前没想到,看了一下别人的代码,百度验证了一下理论的正确性)
    推导过程如下:(n位数是类似的推导过程)

    注意并不是说一个数b是x的倍数,那么这个数b各个位相加就是x的倍数;
    例如:12是2和4的倍数,1+2却不是2和4的1倍数

    代码如下:

    #include <iostream>
    #include <cmath>
    #include <algorithm>
    #include <set>
    #include <cstdio>
    #include <string>
    #include <cstring>
    /*@author:浅滩
    *family:
    *time:
    */
    //我好像是一个在海边玩耍的孩子,
    //不时为拾到比通常更光滑的石子或更美丽的贝壳而欢欣鼓舞,
    //而展现在我面前的是完全未探明的真理之海
    using namespace std;
    typedef long long ll;
    int main()
    {
    ll l,r;
    ll cnt=0;
    cin>>l>>r;
    for(ll i=l;i<=r;i++)
    {
        if((i*(i+1)/2)%3==0)
        cnt++;
    }
    cout<<cnt<<endl;
    
    //cout << "Hello world!" << endl;
        return 0;
    }
    
    
    不一样的烟火
  • 相关阅读:
    TAM实施范例
    xmanager连接到RHEL6.
    TAM安装过程中遇到的问题
    db29.1FP2升级FP12
    WAS常见问题及解答
    在 Lotus Quickr for Domino 环境中使用 Tivoli Access Manager WebSEAL 作为反向代理服务器
    TAM包含的内容全面的指南自IBM
    Setting up the Web Admin Tool in LDAP 6.x to communicate via SSL
    oracle字符集。
    redhat中设置环境变量PATH的方法和只显示目录的Tree
  • 原文地址:https://www.cnblogs.com/cstdio1/p/11096742.html
Copyright © 2011-2022 走看看