UVA - 10994 Simple Addition

来源:互联网 发布:arm linux交叉编译 编辑:程序博客网 时间:2024/04/29 13:00

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


解题思路:1 ~ N 之间的数可以按照1~9划分(只会有这几种情况), 我们可以算出 1 ~ p - 1 间的和, 再算出 1 ~ q 间的和 , 然后用 1 ~ q 间的和减去 1 ~ p ~ 1 间的和得出的结果即为 p ~ q 间的和

#include <cstdio>typedef long long LL;LL F(LL n) {LL ans = 0;do {ans += ((n % 10) + 1) * (n % 10) / 2 + n / 10 * 45;} while (n /= 10);return ans;}int main() {LL p, q;while (scanf("%lld%lld", &p, &q), p > -1)printf("%lld\n", F(q) - F(--p));return 0;}


0 0