Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
无聊水题#include <iostream> #include <stdio.h> using namespace std; int mx(int a, int b){ return (a>b)? a:b; } int main() { int n; while(1){ scanf("%d", &n); if(n <= 0) return 0; int mod[100]; mod[0] = 1; int tag = -1; int n2 = 0, n5 = 0; while(n%2 == 0){ n/=2; n2++; } while(n%5==0){ n/=5; n5++; } if(n == 1){ printf("1"); for(int i = 0; i < mx(n2, n5); i++) printf("0"); printf("\n"); continue; } for(int i = 1; i < 100; i++){ mod[i] = (mod[i-1]*10)%n; } bool dp[101][200], trc[101][200]; dp[1][1] = 1; dp[1][0] = 0; trc[1][1] = 1; for(int i = 2; i < n; i++) dp[1][i] = 0; for(int i = 2; i <= 100; i++){ for(int j = 0; j < n; j++){ if(dp[i-1][j]){ dp[i][j] = 1; trc[i][j] = 0; } else{ int orig = (n+j-mod[i-1])%n; if(dp[i-1][orig]){ dp[i][j] = 1; trc[i][j] = 1; } else dp[i][j] = 0; } if(j == 0 && dp[i][j]){ tag = i; goto done; } } } done: int j = 0; for(int i = tag; i > 0; i--){ if(trc[i][j]) printf("1"); else printf("0"); if(trc[i][j]) j = (n+j-mod[i-1])%n; } int n25 = mx(n2, n5); for(int i = 0; i < n25; i++) printf("0"); printf("\n"); } return 0; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator