我发这题只是想说明:有时候确实需要用水题来找找自信的~
代码如下:
1 #include <stdio.h> 2 #include <algorithm> 3 #include <string.h> 4 using namespace std; 5 typedef long long ll; 6 7 int num[1000+5] = {0,3,3,5,4,4,3,5,5,4,3,6,6,8,8,7,7,9,8,8,6}; 8 int sum[1000+5]; 9 10 void init() 11 { 12 for(int i=21;i<=29;i++) num[i] = 6 + num[i-20]; 13 num[30] = 6; 14 for(int i=31;i<=39;i++) num[i] = 6 + num[i-30]; 15 num[40] = 5;num[50] = 5;num[60] = 5;num[70] = 7;num[80] = 6;num[90] = 6; 16 for(int i = 40;i<=99;i++) 17 { 18 if(i%10==0) continue; 19 else num[i] = num[i-i%10] + num[i%10]; 20 } 21 num[100] = 10; 22 for(int i=101;i<=999;i++) 23 { 24 if(i%100==0) 25 { 26 num[i] = num[i/100] + 7; 27 } 28 else 29 { 30 num[i] = 3; 31 num[i] += num[i-i%100] + num[i%100]; 32 } 33 } 34 num[1000] = 11; 35 for(int i=1;i<=1000;i++) sum[i] = sum[i-1] + num[i]; 36 } 37 38 int main() 39 { 40 init(); 41 int T;scanf("%d",&T); 42 while(T--) 43 { 44 int n;scanf("%d",&n); 45 printf("%d ",sum[n]); 46 } 47 }