Arithmetic problem | 给定 l, r, k,求在 [l, r] 区间中,所有 f(x) = k 的 x 的和
来源:互联网 发布:战舰世界 mac 国服 编辑:程序博客网 时间:2024/05/13 23:29
题目难度一般,题目如下:
给定一个数 x,设它十进制展从高位到低位上的数位依次是 a0, a1, ..., an - 1,定义交错和函数:
f(x) = a0 - a1 + a2 - ... + ( - 1)n - 1an - 1
例如:
f(3214567) = 3 - 2 + 1 - 4 + 5 - 6 + 7 = 4
给定 l, r, k,求在 [l, r] 区间中,所有 f(x) = k 的 x 的和,即:
100 121 0
231
【如题所述,需要不停取每个数的每一位进行交错相加或相减,取数的位可通过%10取得,但因每次取的都为该数个位所以无法判断何时减何时加,显然先获取该数总位数再创建数组存储各位是不明智的做法。实际上我们也不需要刻意从最高位开始按规律相加减,从式子可以得出规律,位数之间,遇偶数相减,遇奇数相加,因此,总位数为奇数的各位规律是对称的,因此从个位到最高位也是符合该规律的。总位数为偶数时,各位的规律相反。】
思路实现代码如下:(c语言)void Method(int l,int r,int k){ int i,t,n,m=0; for(i=l; i<=r; ++i) { t=0;n=1;l=i; while(l){ if(n%2!=0) t+=l%10; else t-=l%10; l/=10; ++n; } if(n%2!=0) t*=-1; if(t==k){ m+=i; printf("[%d,%d]\n",i,t); } } printf("%d",m);}
12 0
- Arithmetic problem | 给定 l, r, k,求在 [l, r] 区间中,所有 f(x) = k 的 x 的和
- HDU 6069 求区间[L,R]每个数的k次方的因子数之和
- 开区间[L, R]中的整数L,R;在此区间中所有质数的个数n
- 给定两个整数 l 和 r ,对于所有满足1 ≤ l ≤ x ≤ r ≤ 10^9 的 x ,把 x 的所有约数全部写下来。对于每个写下来的数,只保留最高位的那个数码。求1~9每个数码出现的次数。
- 数位dp 求l-r(10进制) 在k进制中有多少个回文数的模板
- 给定一个序列,每次询问序列中第l个数到第r个数中第K大的数是哪个
- EllysXors_求L-R中所有数异或最后的值
- 【Codeforces Round 339 (Div 2)A】【水题 暴力】 LinkCut Tree 输出[l,r]范围内所有的k的幂数
- 笔试面试13--给定 x, k ,求满足 x + y = x | y 的第 k 小的正整数 y
- Codeforces 813E Army Creation 主席树(在线,求[l,r]内比x大的数的个数)
- Codeforces 813E Army Creation 主席树(在线,求[l,r]内比x大的数的个数)
- 【NYOJ 38 K r u s k a l】
- HDU 3874 Necklace&&HDU 3333 Turing Tree(求一些区间l~r中的数去重后的和)
- hdu 4417 求[l,r]区间内小于v的有多少个
- K-L变换和PCA的区别
- Linux中ls -a,-l,-r,-R命令的实现
- for /d /r /l /f
- 如果令 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 分别等于
- 神经网络的反向传播
- Android制作简易计算器【JAVA】
- Flume+Kafka+Storm+Redis实时分析系统基本架构
- HDU1061
- ffplay的快捷键以及选项
- Arithmetic problem | 给定 l, r, k,求在 [l, r] 区间中,所有 f(x) = k 的 x 的和
- 走遍中国 —— 北京
- Unity各个函数的执行顺序
- 使用WebView同时开发Android和IOS应用
- .bash_profile和.bashrc说明
- 2016多校联赛2D Eureka(hdu 5738)
- 向上向下类型转换
- poj2195 Going Home(最大费用最小流)
- Linux FTP 服务器配置简单说明