数论水题,但是因为自己数论比较弱,而且这题也想了半个小时,所以还放上来

题意:

对于任意一个非负数N,我们定义D(N) 为N上奇数数字的和加上两倍偶数数字的和。举个例子:D(567) = 5 + 6 * 2 + 7 = 24, D(314159) = 3 + 1 + 2 * 4 + 1 + 5 + 9 = 27.
令F(N)表示D(N)的最后一位数字。例如:F(567) = 4, F(314159) = 7。
你的问题是,给你两个数A, B,你要计算出∑F(i), i ∈ [A, B]

输入格式

第一行输入一个整数T,表述有T组case。(T <=1000)
接下来T行,每行输入两个数字A, B (0 <= A <= B <= 400,000,000)

 

输出格式

每一行输出一个整数,表示题目所要求的和。 

 

输入样例

3
1 8
28 138
314159 314159

 

输出样例

36
495
7

此题很明显的数论(数学题),数据很大,显然不可能用循环否则必定超时,只能发掘它的巧妙之处直接计算,这是数学题的特点,用对的算法,时间复杂度往往是O(1),不对的话,一般是TLE,还有可能WA这题首先想到了分治法统计在AB区间内所有数字出现过的次数,然后求和再求模,简单证明一下这个方法发现是错的,再用了几组数据发现也是错的,所以抛弃了这个方法。再想,会不会是有什么规律,但是一眼也看不出什么特别的规律,当时只知道一个规律,从0到9的Fn分别是0,1,4,3,8,5,2,7,6,9,也就是刚好0到9这10个数字又出现了一遍,和为45。然后再纸上老老实实列出了0到30的所有Fn,列到29的时候顿悟了。是存在一个周期,周期是10,在周期以外的数字单独处理,因为周期是10,所有周期以外的数字不会超过10个,最多9个,而周期以内的数字一个数学公式解决,时间复杂度可以说是几乎O(1)那么这个周期是什么?那就是从任意一个数字m开始,这个数字满足一个条件个位数是0,一直到m+9(那么显然m+9的个位数就是9),一共10个数字,这个10个数字的Fn之和为45这个东西的证明写起来有些麻烦就不写了,稍微思考一下谁都懂的所以给出区间[H,L],要保证H的个位数为0,L的个位数为9,如果不满足,则单独求H的Fn,并且让H递增知道H个位数等于0为止,同理若L个位数不为9,则单独求L的Fn,并让L递减直到个位数等于9为止预处理后[H,L]就是一个包含1个或多个周期的区间,求出区间长度并求出周期个数,每个周期的Fn和为45,则len=(L-H+1),c=len/10;  s=c*45;ans=s+之前单独计算的H和L部分的Fn值

然后注意处理一个特殊情况就是区间[H,L]的长度都不满足一个周期,也就是H递增和L递减之后区间已经全部单独计算完了,这时候就不用算什么周期了

嗯,总的来说还是一道水题,现在还没有加强数论(数学)题的训练,以后要加强训练啊
#include <cstdio>
#include <cstring>
char s[50];
int H,L,ans;int get_dn(int n)
{int sum=0,tmp;while(n>0){tmp=n%10;if(tmp&1)  //奇数sum+=tmp;elsesum+=tmp*2;n/=10;}return sum;
}
int get_fn(int n)
{return get_dn(n)%10;
}
int main()
{int T;scanf("%d",&T);while(T--){scanf("%d%d",&H,&L);ans=0;while(H<=L){if((H%10)==0)  break; //个位是0ans+=get_fn(H);H++;}while(H<=L){if((L%10)==9)  break;ans+=get_fn(L);L--;}if(H>L)  //已经算完了printf("%d\n",ans);else{ans+=(L-H+1)/10*45;printf("%d\n",ans);}}return 0;
}

转载于:https://www.cnblogs.com/scau20110726/archive/2012/12/02/2798419.html

scau 2012新生赛 G只有神知道的世界相关推荐

  1. 逆向迷宫题总结(持续更新) 2020华南师大CTF新生赛maze,攻防世界新手区:NJUPT CTF 2017,BUUCTF:不一样的flag

    CTF逆向入门:迷宫题学习记录(持续更新) ** 目录 **CTF逆向入门:迷宫题学习记录(持续更新)** (前言) 一. 逆向迷宫题概述 二. 具体题目分析 1. 2019华南师大CTF新生赛maz ...

  2. SCAU 2018新生赛 初出茅庐 全题解

    我的博客园传送门,看起来更方便一些 18363 ACMer不得不知道的事儿(五) 思路:题目问有牌子就行,那就贪心,当懒狗摸铜牌最优. 但是有一点要注意.不能直接当前rank/0.6向上取整来算.因为 ...

  3. 【SCAU 10新生赛】 9511 跑跑卡丁车I 数论

    某年暑假的时候,QIU很喜欢玩跑跑卡丁车,因为跑跑卡丁车能够在线联网,所以他就能跟自己的朋友一齐很开心的在同一跑道上比赛. 跑跑卡丁车的地图很多样,但是模式都差不多,在道具模式中,我们可以得到一些很有 ...

  4. ACM新生赛部分题解

    2021级的ACM新生赛已经完结了,我就自己做出来的八道题整理一下题解,因为其他是真的不会. 链接:登录-专业IT笔试面试备考平台_牛客网 来源:牛客网 一.我们是冠军 7 日星期 777 的凌晨,7 ...

  5. 零打碎敲学Android 五 —AVG,只有神知道的世界

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! AVG, ...

  6. 零打碎敲学Android(五)—AVG,只有神知道的世界

    AVG,英文全称Adventure Game,缩写为AVG或ADV,是电子游戏中的一个大类就足够了.事实上,AVG的范畴相当庞杂,很难单纯用文字说清,关于AVG游戏,笔者此处不想解释太细,以前的博文中 ...

  7. 2015GPNU新生赛题解

    2015GPNU新生赛题解 今年的题目结合了往年的题目和华工,华师新生赛题目,确实是历年最难. * 1001 * Problem Description 最近ACM协会各种各样的费用都要申报,会长一时 ...

  8. 2021暨南大学轩辕杯ACM程序设计新生赛题解

    title : 2021暨南大学轩辕杯ACM程序设计新生赛 date : 2021-12-12 tags : ACM,练习记录 author : Linno 题目链接:https://ac.nowco ...

  9. [SWPUCTF] 2021新生赛之Crypto篇刷题记录(11)

    [SWPUCTF] 2021新生赛之Crypto篇刷题记录① [SWPUCTF 2021 新生赛]crypto6 [SWPUCTF 2021 新生赛]ez_caesar [SWPUCTF 2021 新 ...

最新文章

  1. python 字典排序
  2. 逻辑回归(使用多项式特征)
  3. union和union all有什么区别_什么是Python Wheels?为什么要关心它?
  4. 发送请求获取响应内容(c#)
  5. jboss4 java_JBoss核心Java Web服务
  6. 余弦函数导数推导过程_对三角函数深入理解以及换元法的应用
  7. 深入源码之Commons Logging[转]
  8. c2665 “initgraph”: 2 个重载中没有一个可以转换所有参数类型_一个使用延迟候选项生成的用于自动化程序修复方法的工具...
  9. Tomcat JAAS 身份验证和授权
  10. 2021-2027全球与中国IPA干燥机市场现状及未来发展趋势
  11. Flash Video DRM 视频版权保护技术
  12. by mysql 按每分钟group_MySQL group by 统计每5分钟数据量
  13. 首席新媒体黎想告诉你,不花钱做互联网推广!这些方式了解一下
  14. java多个pdf合并为一个pdf,并通过feign下载
  15. 洛谷题目P1425 小鱼的游泳时间
  16. 使用WebSocket实现网页聊天室
  17. 【Unity3D进阶4-4】Unity3D AR的开发
  18. Kdevelop使用
  19. windows7经典开机音乐_Windows 7正式退休,微软出手,网友含泪告别情怀:感谢11年陪伴...
  20. Ubuntu 11.04安装pcsx2模拟器简明过程

热门文章

  1. View绘制原理 —— 画在哪?
  2. 欲取代CNN的Capsule Network究竟是什么来头?它能为AI界带来革命性转折么?
  3. Plugin with id 'com.novoda.bintray-release' not found.的解决方案
  4. OC基础回想(十二)协议
  5. 原生JavaScript实现字符串长度截取
  6. linux 下的 rsync 文件同步
  7. 菜鸟学SSH(十二)——Hibernate与Spring配合生成表结构
  8. 获取当前的系统时间 年-月-日 小时-分钟-秒
  9. 都是“工作惯性”惹的祸
  10. win10 rabbitMQ的安装与测试