1. //组合数学
  2. //计算sum{i从右往左数的第一个非0数字,p<=i<=q}。
  3. #include <cstdio>
  4. typedef long long ll;
  5.  
  6. ll sum(ll n)
  7. {
  8. ll ans = , x;
  9. while(n)
  10. {
  11. x = n % ;
  12. n /= ;
  13. ans += (( + x) * x) / + n * ; //当个位在循环的时候,高位的朋友你在干嘛?
  14. }
  15. return ans;
  16. }
  17.  
  18. int main()
  19. {
  20. ll a, b;
  21. while(scanf("%lld%lld", &a, &b), a >= )
  22. {
  23. printf("%lld\n", sum(b) - sum(a - ));
  24. }
  25. return ;
  26. }

题目大意:给出l和r,求∑(l≤i≤r)F(i), F(i)函数题目中有。

解题思路:由两边向中间缩进,然后l和r之间的数可以按照1~9划分(只会有这几种情况)。

  1. #include <stdio.h>
  2. #define ll long long
  3. ll ans;
  4.  
  5. ll f(ll x) {
  6. if (x == ) return ;
  7. else if (x % )
  8. return x % ;
  9. else
  10. return f(x / );
  11. }
  12.  
  13. void solve(ll l, ll r) {
  14. if (r - l < ) {
  15. for (int i = l; i <= r; i++)
  16. ans += f(i);
  17. return;
  18. }
  19.  
  20. while (l % ) {
  21. ans += f(l);
  22. l++;
  23. }
  24.  
  25. while (r % ) {
  26. ans += f(r);
  27. r--;
  28. }
  29. ans += * (r - l) / ;
  30. solve(l / , r / );
  31. }
  32.  
  33. int main () {
  34. ll l, r;
  35. while (scanf("%lld%lld", &l, &r), l >= || r >= ) {
  36. ans = ;
  37. solve(l, r);
  38. printf("%lld\n", ans);
  39. }
  40. return ;
  41. }

其實只要看題目推敲一下,大概可以知道其實就是各個數字最低階不是0的數字的總和。

可將題目要加的拆成各個位數來做,每一個位數都要考慮%10和/10的情況要加多少,將這些值全部加起來即可得解。

P.S. 雖然p,q可以在32bits整數下存放,但可沒說總和也可以喔!

  1. #include<iostream>
  2. #include<cstdio>
  3. using namespace std;
  4.  
  5. int main(){
  6. long long p, q;
  7. long long sum;
  8.  
  9. while( scanf( "%lld%lld", &p, &q ) != EOF && !( p < && q < )){
  10. sum = ;
  11.  
  12. while( p || q ){
  13. sum += (q%+p%)*((q%)-(p%)+)/;
  14. sum += (q/-p/)*;
  15.  
  16. if( p% && (p/ || q/) ) p += ;
  17. p /= ;
  18. q /= ;
  19. }
  20.  
  21. printf( "%lld\n", sum );
  22. }
  23. return ;
  24. }

uva 10994 - Simple Addition的更多相关文章

  1. uva 10994 - Simple Addition(规律)

    题目链接:uva 10994 - Simple Addition 题目大意:给出l和r,求∑(l≤i≤r)F(i), F(i)函数题目中有. 解题思路:由两边向中间缩进,然后l和r之间的数可以按照1~ ...

  2. 10994 - Simple Addition(规律)

    Problem E Simple Addition Input: Standard Input Output: Standard Output Let’s define a simple recurs ...

  3. 组合数学第一发 hdu 2451 Simple Addition Expression

    hdu 2451 Simple Addition Expression Problem Description A luxury yacht with 100 passengers on board ...

  4. uva 12253 - Simple Encryption(dfs)

    题目链接:uva 12253 - Simple Encryption 题目大意:给定K1.求一个12位的K2,使得KK21=K2%1012 解题思路:按位枚举,不且借用用高速幂取模推断结果. #inc ...

  5. HDU 2451 Simple Addition Expression(组合数学)

    主题链接:http://acm.hdu.edu.cn/showproblem.php?pid=2451 Problem Description A luxury yacht with 100 pass ...

  6. HDU2451:Simple Addition Expression

    Problem Description A luxury yacht with 100 passengers on board is sailing on the sea in the twiligh ...

  7. UVA - 10014 - Simple calculations (经典的数学推导题!!)

    UVA - 10014 Simple calculations Time Limit: 3000MS Memory Limit: Unknown 64bit IO Format: %lld & ...

  8. 【计数】Simple Addition Expression

    [来源] 2008年哈尔滨区域赛 [题目链接]: http://acm.hdu.edu.cn/showproblem.php?pid=2451 [参考博客]: HDU 2451 Simple Addi ...

  9. uva 10014 Simple calculations

    http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&p ...

随机推荐

  1. delphi : 取得网页源码内容

    取得网页的源码内容的函数以及调用方法供大家参考: program geturl; uses wininet, windows; //取网页内容 function StrPas(const Str: P ...

  2. Python学习笔记整理(十)Python的if测试

    if语句是选取要执行的操作. 一.if语句 1.通用格式 形式是if测试,后面跟着一个或多个可选的elif(else if)测试,以及一个最终选用的else块.测试和else部分可以结合嵌套语句块,缩 ...

  3. ubuntu 12.04 安装nginx

    nginx是一个强大的高性能反向代理服务器,其特点是占内存少,并发能力强,在高并发的情况下是apache 的一个不错的代替品,能够支持高达50000个并发连接数的响应,那么这么强大的武器,究竟如何在l ...

  4. 深入理解querySelector(All)

          querySelector和querySelectorAll同属于Selectors API Level 1规范,该规范早在2006年就已经开始发展,并在2007年10月形成querySe ...

  5. Spark Streaming Backpressure分析

    1.为什么引入Backpressure 默认情况下,Spark Streaming通过Receiver以生产者生产数据的速率接收数据,计算过程中会出现batch processing time > ...

  6. 负电压基准电路(-2.5V/-5V电压基准)

    运算放大器大多数都是双电源的,这就要求有正负基准电压,除了从稳压源直接输出电压外,很多时候都是一个单电源对整个电路供电,这就要求要把正电压转换成负电压,从而产生正负的电压基准,对双电源运算放大器进行供 ...

  7. 51单片机C语言学习笔记8:单片机C51编程规范

    1.单片机C51编程规范- 前言  为了提高源程序的质量和可维护性,从而最终提高软件产品生产力,特编写此规范. 2.单片机C51编程规范-范围 本标准规定了程序设计人员进行程序设计时必须遵循的规范.本 ...

  8. java中Runnable接口含义

    Java中实现多线程有两种途径:继承Thread类或者实现Runnable接口. Runnable接口非常简单,就定义了一个方法run(),继承Runnable并实现这个 方法就可以实现多线程了,但是 ...

  9. nginx对比haproxy 的反向代理

    -bash-4.1# ip add | grep inet inet 172.17.0.7/16 scope global eth0 inet6 fe80::42:acff:fe11:7/64 sco ...

  10. locate,nl命令

    locate 命令 locate 让使用者可以很快速的搜寻档案系统内是否有指定的档案.其方法是先建立一个包括系统内所有档案名称及路径的数据库,之后当寻找时就只需查询这个数据库,而不必实际深入档案系统之 ...