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;
}