您的位置:首页 > 其它

uva 10994 - Simple Addition(规律)

2013-10-31 00:23 441 查看
题目链接:uva 10994 - Simple Addition

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

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

#include <stdio.h>
#define ll long long
ll 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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: