题目:传送门
思路: 把0~9都直接手算出来,从a到b逐个遍历,每个数都拆分,更新sum值即可.
#include <iostream>
#include <map>
using namespace std;
map<int,int> s;
int sums (int x) { // 计算单个数需要的段.
int ans = 0;
s[0] = 6;s[1]=2;s[2]=5;s[3] = 5;s[4] = 4;s[5] = 5;s[6] =6;s[7]=3;s[8] =7;s[9]=6;
if(x==0) return s[x];
else {
while(x!=0) {
ans+=s[x%10];
x/=10;
}
return ans;
}
}
int main() {
int a,b;
cin>>a>>b;
int sum = 0;
for(int i=a;i<=b;i++) {
if(sum<0) cout<<"?"<<endl;
sum+=sums(i);
}
cout<<sum<<endl;
return 0;
}