题目传送门
题意:
有四种罗马数字: 。分别表示十进制数 。
每个罗马数字相当于一个字符。
一个字符串的权值为每个罗马字符对应的十进制数累加值。
一个长度为 的字符串,可以有多少种权值。
数据范围: 。
题解:
设 表示长度为 的字符串的权值种类数。
时,暴力计算。
时,输出 。
感受:
这种题不会做,直接打表。
我打了前 个数,没有看出来。
看了题解,发现只要打前 个数,就能看出来了。
打表是一种技能,并不是投机取巧。
代码:
#include<bits/stdc++.h>
using namespace std ;
typedef long long ll ;
int n ;
int a[12] = {0 , 4 , 10 , 20 , 35 , 56 , 83 , 116 , 155 , 198 , 244 , 292} ;
int main()
{
scanf("%d" , &n) ;
if(n <= 11) printf("%d\n" , a[n]) ;
else printf("%lld\n" , ll(a[11]) + ll(n - 11) * 49) ;
return 0 ;
}