Find 3-friendly Integers



题目大意:数字里是否有3的倍数的数
思路:一开始确实没啥思路,一看范围1e18就知道这是一道有规律的题,打表就很清楚到100以后都是符合题意的数字
遇到题目不要放弃,发现规律会发现非常简单,要是不去思考会发现就这样放弃了一道签到题!
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
bool f(int n){
stringstream ss;
ss<<n;
string s;
ss>>s;
for(int i=0;i<s.size();i++){
ll res=0;
for(int j=i;j<s.size();j++){
res+=(s[j]-'0');
if(res%3==0) return true;
}
}
return false;
}
int main(){
int t;
cin >> t;
ll l,r;
while(t--){
cin >> l >> r;
ll res1=0,res2=0;
if(l>100) res1=76+(l-1-100);
else{
for(int i=1;i<l;i++){
res1+=f(i);
}
}
if(r>=100) res2=76+(r-100);
else{
for(int i=1;i<=r;i++){
res2+=f(i);
}
}
cout <<res2-res1 << endl;
}
return 0;
}
这是一篇关于编程算法的博客,主要讨论了如何判断一个整数中是否包含3的倍数的数字。作者提到通过观察100以上的数字规律,可以发现大部分数字都不含连续的3的倍数。文章提供了C++代码实现,用于计算给定范围内不含3的倍数的整数数量,并给出了测试用例。博客鼓励读者在遇到难题时要善于发现规律,避免轻易放弃。
263

被折叠的 条评论
为什么被折叠?



