zoukankan      html  css  js  c++  java
  • UVA 10994 Simple Addition

    UVA_10994

        这个题目一开始WA了几次,抱着侥幸的心理把几个感觉可以是int的也改成了long long int了,没想到AC了,后来发现可能是一个乘法的细节溢出了,以后一定得多注意这类的问题,避免中间结果溢出。

        下面说这个题目的思路吧,其实对于个位1-9都是一样的,只不过10的倍数变化比较大,于是我们不妨先算完个位不为0的,然后把区间除以10,这样新区间里面剩下的就都是10的倍数了,然后再不断重复前面的操作就可得到最后的结果,注意最后区间长度小于10的时候就直接把他们的和算出来就可以了。

    #include<stdio.h>
    #include<string.h>
    long long int P, Q, res;
    long long int F(long long int n)
    {
    if(n == 0)
    return 0;
    if(n % 10)
    return n % 10;
    return F(n / 10);
    }
    void dfs(long long int x, long long int y)
    {
    long long int i;
    if(y - x < 10)
    {
    for(i = x; i <= y; i ++)
    res += F(i);
    return ;
    }
    for(; x % 10; x ++)
    res += F(x);
    for(; y % 10; y --)
    res += F(y);
    res += 45 * ((y - x) / 10);
    dfs(x / 10, y / 10);
    }
    void solve()
    {
    res = 0;
    dfs(P, Q);
    printf("%lld\n", res);
    }
    int main()
    {
    for(;;)
    {
    scanf("%lld%lld", &P, &Q);
    if(P == -1 && Q == -1)
    break;
    solve();
    }
    return 0;
    }


  • 相关阅读:
    Sublime Text前端开发环境配置
    CSS盒模型
    Angular-如何在Angular2中使用jQuery及其插件
    六:Angular 指令 (Directives)
    五:Angular 数据绑定 (Data Binding)
    四:Angular 元数据 (Metadata)
    三:Angular 模板 (Templates)
    二:Angular 组件 (Components)
    一:Angular 模块 (Modules)
    js获取浏览器内核
  • 原文地址:https://www.cnblogs.com/staginner/p/2294028.html
Copyright © 2011-2022 走看看