问题 : 幸运数字

问题 : 幸运数字题目描述定义幸运数字为数位 十进制 只含有 4 和 7 的数字

题目描述

定义幸运数字为数位(十进制)只含有 4 和 7 的数字。例如:4,7,47,777 等是幸运数字;5,72 等就不是幸运数字。

定义函数 next(n)表示大于等于 n 的最小的幸运数字,现在给你一个区间[a, b]让你求 S(a,b)=next(a)+next(a+1)+....+next(b-1)+next(b)的值。

输入

第一行输入一个整数 T (T ≤ 10),表示测试样例个数,对于每个测试样例,
输入两个空格分开的整数 a,b(1 ≤ a ≤ b ≤ 10^9 ) 表示给出的区间是[a, b]。

输出

对于每个测试样例,输出一个整数,表示 S(a,b)的值,每个测试数据的输出占一行。

样例输入

2 2 7 6 7 

样例输出

33 14 

代码:

#include<stdio.h> int main() { int t, a, b, i; long long q[1025] = {4,7,44,47,74,77,444,447,474,477,744,747,774,777,4444,4447,4474,4477,4744,4747, 4774,4777,7444,7447,7474,7477,7744,7747,7774,7777,44444,44447,44474,44477,44744,44747, 44774,44777,47444,47447, 47474,47477,47744,47747,47774,47777,74444,74447,74474,74477,74744,74747,74774,74777, 77444,77447,77474,77477,77744,77747, 77774,77777,,,,,,,,,,, ,,,,,,,, ,,,,,,,,,,,, ,,,,,,,, ,,,,,,,,,,,, ,,,,,,,, ,,,,,,,,,,, ,,,,,,,,, ,,,,,,,,,, ,,,,,,,,,, ,,,,,,,,,, ,,,,,,,,,, ,,,,,,,,,, ,,,,,,,,,, ,,,,,,,,,, ,,,,,,,,,, ,,,,,,,,,, ,,,,,,,,,, ,,,,,,,,,, ,,,,,,,,,, ,,,,,,,,, ,,,,,,,,,, ,,,,,,,,, ,,,,,,,,,,, ,,,,,,,,, ,, ,,,,,,,,,, ,,,,,,,,,, ,,,,,,,,, ,,,,,,,,,,, ,,,,,,,,, ,,,,,,,,,,, ,,,,,,,,, ,,,,,,,,,,, ,,,,,,,,, ,,,,,,,,,,, ,,,,,,,,, ,,,,,,,,,,, ,,,,,,,,, ,,,,,,,,, ,, ,,,,,,,,, ,,,,,,,,, ,, ,,,,,,,,, ,,,,,,,,, ,, ,,,,,,,,, ,,,,,,,,, ,, ,,,,,,,, ,,,,,,,, ,,,, ,,,,,,,, ,,,,,,,, ,,,, ,,,,,,,, ,,,,,,,, ,,,, ,,,,,,,, ,,,,,,,, ,,,, ,,,,,,,, ,,,,,,,, ,,,, ,,,,,,,, ,,,,,,,, ,,,, ,,,,,,,, ,, ,,,,,,,, ,, ,,,,,,,, ,, ,,,,,,,, ,, ,,,,,,,, ,, ,,,,,,,, ,, ,,,,,,,, ,, ,,,,,,,, ,, ,,,,,,,, ,, ,,,,,,,, ,, ,,,,,,,, ,, ,,,,,,,, ,, ,,,,,,,, ,, ,,,,,,,, ,, ,,,,,,,, ,, ,,,,,,,, ,, ,,,,,,,, ,, ,,,,,,,, ,, ,,,,,,,, ,, ,,,,,,,, ,, ,,,,,,,, ,, ,,,,,,,, ,, ,,,,,,,, ,, ,,,,,,,, ,, ,,,,,,,, ,, ,,,,,,,, ,, ,,,,,,,, ,, ,,,,,,,, ,, ,,,,,,,, ,, ,,,,,,,, ,, ,,,,,,,, ,, ,,,,,,,, ,, ,,,,,,,, ,, ,,,,,,,, ,, ,,,,,,,, ,, ,,,,,,,, ,, ,,,,,,,, ,, ,,,,,,,, ,, ,,,,,,,, ,, ,}; long long sum; scanf("%d", &t); while(t --) { sum = 0; scanf("%d %d", &a, &b); int c = 0; for(i = a ; i <= b ; i ++) { if (i > ) // 大于, 拿最后一个 { sum += *(b-i+1); i = b; } else if (i <= q[c]) { if (q[c] <= b) // 阶段和 { sum += q[c]*(q[c]-i+1); i = q[c]; } else { sum += q[c]*(b-i+1); i = b; } } else { while (1) // 找满足的那个数开始. { c ++; if (i <= q[c]) { sum += q[c]; break; } } } } printf("%lld\n", sum); } return 0; }

今天的文章 问题 : 幸运数字分享到此就结束了,感谢您的阅读。
编程小号
上一篇 2024-12-13 15:40
下一篇 2024-12-13 15:33

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ji-chu/85247.html