
本文共 4684 字,大约阅读时间需要 15 分钟。
���������������������������������������������
HDU4814 Golden Radio Base
������������
������������������������������������������E���������������������������������
������
���������10^9������������������������������������
������
������������E���������������������������������
������������
123610
������������
110.01100.011010.000110100.0101
������������
���������������������������������������������������������������������������������������������������������������E���������������������������������������������������������������������������10-base���n������������������n*E^0������������E��������������������������������������������������������������������������������������������������������������������������������������������������������������� E^n = E^n-1 + E^n-2, ��� 2*E^n = E^n+1 + E^n-2������������������������������������������������a[]������������������������������������������������a[i]������E���i���������������������������������������������������������������������������������������������������������������������������������������������������������E���-i���������������������������������������������������������E���������������������������������������������������������������������������E^50������������10^9������������������������������������100���������50������������������������������������50���������������������������������a[50]������������������n������50������E���0���������������������������������������������10-base���n���������������E-base���n*E^0���,���������������������a[]������������������������������������������������������������������������������1���������������������������������������������������������������������������������������������������1������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������a[]���������������������������������������������������������������������������������������������������������������������������������������������������
���������
1 #include2 #include 3 #include 4 using namespace std; 5 6 /* 7 E^n���������������������E���n��������� 8 ������1���E^n = E^(n-1) + E^(n-2) 9 ������1���������n*E^n = n*E^(n-1) + n*E^(n-2) 10 ������2���2*E^n = E^(n+1) + E^(n-2)11 */12 int min(int a, int b){13 return a < b ? a : b;14 }15 16 int main(){17 int a[105];18 int n;19 while(scanf("%d", &n) != EOF){20 memset(a, 0, sizeof(a));21 a[50] = n;22 int flag = 1;23 while(flag){24 flag = 0;25 for(int i = 1; i <= 100; i++){26 if(a[i] > 1){ //������������������1���������������2���������������������������������������������������������������0���1 27 a[i+1] += a[i]/2;28 a[i-2] += a[i]/2;29 a[i] %= 2;30 flag = 1; //������������������������������������������������������������������������������������������������������1���������1������ 31 }32 if(a[i-1] && a[i-2]){ //���������������1������������������������������������1���������������������������������a[i] 33 int temp = min(a[i-1], a[i-2]); 34 a[i-1] -= temp; 35 a[i-2] -= temp;36 a[i] += temp;37 // a[i-1]--; //������������������������������������������������������TL������ 38 // a[i-2]--;39 // a[i]++;40 flag = 1; //������a[i]������������a[i]���������������1���������������������������������������������1��������� 41 } 42 }43 }44 int point = 0;45 for(int i = 49; i >= 1; i--){46 if(a[i] == 1){47 point = 1;48 break;49 }50 }51 //���������������0���������0���������������������������������������������52 int front = 0;53 int back = 0; 54 for(int i = 100; i >= 50; i--){55 if(a[i] == 0 && front == 0){ //��������������� 56 continue;57 }58 if(a[i] == 1) front = 1;59 printf("%d", a[i]);60 } 61 for(int i = 1; i <= 49; i++){ //������������������������1���������back������ 62 if(a[i] == 1){63 back = i;64 break;65 }66 } 67 if(point){68 printf(".");69 for(int i = 49; i >= back; i--) printf("%d", a[i]);70 } 71 printf("\n");72 }73 return 0;74 }
发表评论
最新留言
关于作者
