uva 10994 - Simple Addition(规律)
题目链接: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;}