More actions
imported>enochbible No edit summary |
(Repair batch-0003 pages from live compare) |
||
| Line 16: | Line 16: | ||
== Status == | == Status == | ||
{| class="wikitable" | {| class="wikitable" style="width:100%;" | ||
|- | |- | ||
| Run ID | | Run ID | ||
| Line 54: | Line 54: | ||
typedef struct longint { | typedef struct longint { | ||
int length; | int length; | ||
int digits | int digits[ARRBOUND]; // 0000~9999 | ||
} longint; | } longint; | ||
| Line 63: | Line 63: | ||
pns->length = len; | pns->length = len; | ||
for( i = 0; i < ARRBOUND; i++ ) | for( i = 0; i < ARRBOUND; i++ ) | ||
pns->digits | pns->digits[i] = 0; | ||
j = ARRBOUND - 1; | j = ARRBOUND - 1; | ||
while( len >= 4 ) { | while( len >= 4 ) { | ||
pns->digits | pns->digits[j] = 1111; | ||
len -= 4; | len -= 4; | ||
j--; | j--; | ||
| Line 73: | Line 73: | ||
switch(len) { | switch(len) { | ||
case 1: | case 1: | ||
pns->digits | pns->digits[j] = 1; | ||
break; | break; | ||
case 2: | case 2: | ||
pns->digits | pns->digits[j] = 11; | ||
break; | break; | ||
case 3: | case 3: | ||
pns->digits | pns->digits[j] = 111; | ||
break; | break; | ||
} | } | ||
| Line 88: | Line 88: | ||
int rem = 0; | int rem = 0; | ||
for( ; i < ARRBOUND; i++ ) { | for( ; i < ARRBOUND; i++ ) { | ||
pns->digits | pns->digits[i] += (rem * 10000); | ||
rem = pns->digits | rem = pns->digits[i] % divisor; | ||
} | } | ||
return rem; | return rem; | ||
| Line 106: | Line 106: | ||
} | } | ||
} | } | ||
Latest revision as of 00:29, 27 March 2026
문제 설명
| 링크 | [1] |
| 개요 | |
| 입력 | |
| 출력 |
Status
| Run ID | User | Problem | Result | Memory | Time | Language | Code Length |
| 9255717 | enochbible | 2551 | Time Limit Exceeded | C | 1263B | ||
| 9255761 | enochbible | 2551 | Accepted | 184K | 641MS | C | 1024B |
Source Code
#include <stdio.h>
#define LENBOUND 10000
#define ARRBOUND 2500 // LENBOUND/4
typedef struct longint {
int length;
int digits[ARRBOUND]; // 0000~9999
} longint;
void ones( longint *pns, int len )
{
int i;
int j;
pns->length = len;
for( i = 0; i < ARRBOUND; i++ )
pns->digits[i] = 0;
j = ARRBOUND - 1;
while( len >= 4 ) {
pns->digits[j] = 1111;
len -= 4;
j--;
}
switch(len) {
case 1:
pns->digits[j] = 1;
break;
case 2:
pns->digits[j] = 11;
break;
case 3:
pns->digits[j] = 111;
break;
}
}
int division( longint *pns, int divisor ) {
int i = ARRBOUND - (pns->length + 3) / 4;
int rem = 0;
for( ; i < ARRBOUND; i++ ) {
pns->digits[i] += (rem * 10000);
rem = pns->digits[i] % divisor;
}
return rem;
}
void main() {
longint ns;
int n;
while( scanf("%d", &n) != EOF ) {
int i;
for( i = 1; i <= LENBOUND; i++ ) {
ones(&ns, i);
if( division(&ns, n) == 0 ) break;
}
if( i <= LENBOUND ) printf("%d\n", i);
}
}