CodeForces - 620B Grandfather Dovlet’s calculator(遍历)

题目:传送门
思路: 把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;
}

猜你喜欢

转载自blog.csdn.net/qq_43305984/article/details/88985501