1 条题解
-
0
自动搬运
来自洛谷,原作者为

Jasoncwx
关注@Jasoncwx谢谢喵!最后在线时间:2025年8月24日19时1分搬运于
2025-08-24 22:50:26,当前版本为作者最后更新于2023-09-17 13:40:32,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
题目思路
不难发现,只要 中出现至少一个整十数,也就是存在至少一个 ,使得 ,这样 的最终结果肯定为 ,导致了 也会为 。
那我们在什么情况下输出 呢?
可以证明,在 的情况下,至少会出现一个整十数。因为要使得一个区间内没有整十数,这个区间内不能多于 个数。
顾名思义,"整十数"就是每隔 个整数会出现一次,所以我们要避免这种情况就只能不多于 个数了。
所以在 时直接输出 ,其它情况直接暴力枚举即可。
代码
#include<bits/stdc++.h> using namespace std; const int mod=1e9+7; long long f(int n){ string s=to_string(n); long long sum=1; for(int i=0;i<s.size();i++)sum*=s[i]-'0'; return sum; }//计算 f(n) int main(){ int t; cin>>t; while(t--){ int l,r;cin>>l>>r; if(r-l+1>=10)puts("0");//区间中出现整十数 else{ long long sum=1; for(int i=l;i<=r;i++){ sum=(sum*f(i))%mod;//答案 } cout<<sum<<endl; } } }
- 1
信息
- ID
- 9210
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 1
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者