Aphelios这孩子打小就聪明,天生就会数数!
他从0开始数,一直数到n,然后这些数字排成一行,用火柴棒一笔一笔的摆出来,如图所示。现在给定n,Aphelios想知道他需要多少根火柴棒,才能够数到n。
由于Aphelios这孩子打小就聪明,所以他不屑于计算,现在请你帮他计算一下最终答案
输入格式:
单组测试数据,输入第一行为正整数n,n<=10^5
输入样例:
3
输出样例:
18
这题暴力居然是满分,挺无语的
#includeusing namespace std; int main() { int n; int c[10] = {6,2,5,5,4,5,6,3,7,6}; long long ans = c[0]; cin>>n; for(int i=0;i<=n;i++){ int t = i; while(t){ int digit = t%10; ans += c[digit]; t /= 10; } } cout< 2、数位统计经典例题修改 统计位数是个经典题,力扣上有,《指offer》也有。
AcWing 338.计数问题 (类似整数中1出现的次数 数位统计DP C++)
关键理解图:
站在巨人肩膀上修改后:
#include#include using namespace std; int cnt_digit(int n,int digit) { int ans = 0, len = 0; if(digit == 0) ans =1; //火柴数从0开始计算 int nt = n; while(nt) { //计算输入数字多少位 len++; nt /= 10; } for(int j=0; j digit) ans += p; // 右边情况2:部分要 } return ans; } int main() { int n; cin>>n; long long sum = 0; int c[10] = {6,2,5,5,4,5,6,3,7,6}; for(int i=0; i<=9; i++) { //不同数字出现次数 sum += cnt_digit(n,i)*c[i]; } cout<



