uva 10994 - Simple Addition(规律)

来源:互联网 发布:淘宝上的药店 编辑:程序博客网 时间:2024/06/10 09:36

题目链接:uva 10994 - Simple Addition


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


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


#include <stdio.h>#define ll long longll ans;ll f(ll x) {if (x == 0)return 0;else if (x % 10)return x % 10;else return  f(x / 10);}void solve(ll l, ll r) {if (r - l < 9) {for (int i = l; i <= r; i++)ans += f(i);return;}while (l % 10) {ans += f(l);l++;}while (r % 10) {ans += f(r);r--;}ans += 45 * (r - l) / 10;solve(l / 10, r / 10);}int main () {ll l, r;while (scanf("%lld%lld", &l, &r), l >= 0 || r >= 0) {ans = 0;solve(l, r);printf("%lld\n", ans);}return 0;}


原创粉丝点击