hdu2089 하지 마 62 (디지털 dp)
9832 단어 HDU
1 #include <stdio.h>
2 #include <string.h>
3 int dp[10][3];
4 int num[10];
5 /*
6 dp[i][0] 62,4
7 dp[i][1] 2
8 dp[i][2] 62 4
9 */
10 void init()
11 {
12 int i;
13 dp[0][0] = 1;
14 for(i=1; i<10; ++i)
15 {
16 dp[i][0] = dp[i-1][0] * 9 - dp[i-1][1];
17 dp[i][1] = dp[i-1][0];
18 dp[i][2] = dp[i-1][2] * 10 + dp[i-1][1] + dp[i-1][0];
19 }
20 }
21 int getAns(int n)
22 {
23 int i,len=0,ans=0;
24 int t = n;
25 while(n)
26 {
27 num[++len] = n % 10;
28 n /= 10;
29 }
30 num[len+1] = 0;
31 bool flag = false;
32
33 for(i=len; i>=1; --i)
34 {
35 ans += num[i] * dp[i-1][2];
36 if(flag)
37 {
38 ans += num[i] * dp[i-1][0];
39 }
40 else if(num[i]>4)// 4
41 ans += dp[i-1][0];
42 if(!flag && num[i]>6)// 6
43 ans += dp[i-1][1];
44 if(!flag && num[i+1]==6&&num[i]>2)
45 ans += dp[i][1];
46 if(num[i+1]==6 && num[i]==2)
47 flag = true;
48 if(num[i]==4)
49 flag = true;
50 }
51
52 return ans;
53 }
54 int main()
55 {
56 int n,m;
57 init();
58 while(scanf("%d%d",&n,&m))
59 {
60 if(n==0 && m==0)
61 break;
62
63 int t = getAns(m+1) - getAns(n);
64 printf("%d
",m-n+1-t);
65 }
66 return 0;
67 }
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
hdu4671(다교리그 7--수 시뮬레이션)클릭하여 링크 열기 제목: n과 서버, m개의 데이터베이스가 있고 모든 데이터베이스는 서버를 연결해야 하지만 모든 데이터베이스는 서버를 연결하는 우선순위가 있습니다.모든 데이터베이스의 서버 우선순위를 구하다.또한 한...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.