본문 바로가기

Solutions

PKU 2388. Who's in the Middle AC 네요~ #include void bubble(int a[], int n) { int i,j,temp,count=0; for(i=0 ; i 더보기
PKU 1804. Brainman AC 네요~ 음... 버블소트군요... 네...버블소트입니다... #include int bubble(int a[], int n) { int i,j,temp,count=0; for(i=0 ; i 더보기
PKU 3094. Quicksum. AC #include #include main() { char string[256]; int i, lenth, sum; while(gets(string)) { if(strcmp(string,"#")==0) break; lenth=strlen(string); for(i=0, sum=0; i 더보기
PKU 3077. Rounders. AC get~ #include using namespace std; int main() { int cases, cipher, data, i; cin >> cases; for (i = 0; i > data; cipher = 10; while (data / cipher != 0) { data += cipher / 2; data /= cipher; data *= cipher; cipher *= 10; } cout 더보기
PKU 3094. Quick sum. AC get~ #include #include using namespace std; int main() { string temp; int sum, i; while(getline(cin, temp)) { if (temp[0] == '#') { break; } sum = 0; i = 0; while(temp[i] != '\0') { if (temp[i] == ' ') { i++; continue; } sum += (i + 1) * (temp[i] - 'A' + 1); i++; } cout 더보기
PKU [3094]. Quicksum. [AC] #include #include char input[255]; int main() { int i; int sum = 0; int length; while(1) { gets(input); length = strlen(input); for(i=0 ; i 더보기
PKU 2388. Who's in the Middle. [판정:AC] #include void swap( int *x, int *y ) { int temp; temp = *x; *x = *y; *y = temp; } // with bubble sorting void ascendantOrdering( int *xAry, int length ) { int i; int j; for( i = 0; i i; j-- ) { if( xAry[j-1] > xAry[j] ) swap( &xAry[j-1], &xAry[j] ); } } } void main() { int n; int production[9999] = {0}; int i; scanf("%d", &n); for( i = 0; i < n; i++ ) { scanf("%d", &production[i]); } ascendantOr.. 더보기
PKU 3077. Rounders. AC #include #include main() { int n, lenth, i; char string[10]; scanf("%d",&n); while(n--) { scanf("%s",&string); lenth=strlen(string); i=lenth; while(--i) { if(string[i] >= '5') { string[i]='0'; string[i-1]+=1; } else { string[i]='0'; } } while(i 더보기
PKU 3077. Rounders. [판정:AC] #include #include void strInit( char a[] ) { int i; for( i = 0; i < 10; i++ ) { a[i] = '0'; } } void printStr( char a[] ) { int i; for( i = 9; a[i%10] != '\0'; i++ ) { if( i==9 && a[i]=='0' ) continue; else printf("%c", a[i%10]); } printf("\n"); } void rounding( char a[], int start, int type ) { int i; for( i = start; a[i] != '\0'; i++ ) { a[i] = '0'; } if( type == 1 ) a[start-1] += 1; } void ma.. 더보기
PKU [3077]. Rounders. [AC] #include #include char input[50]; int main() { int i , j; int n; int length; scanf("%d", &n); while(n--) { scanf("%s", input); length = strlen(input); if(length == 1) { printf("%d", input[0] - '0'); } else { for(j=length-1 ; j>0 ; j--) { if(input[j] >= '5') { input[j] = '0'; input[j-1] += 1; } else if(input[j] < '5') { input[j] = '0'; } } for(i=0 ; i 더보기
PKU [2388]. Who's in the Middle. [AC] #include #include int input[10000]; int compare(int *a, int *b) { if(*a > *b) { return 1; } else if(*a == *b) { return 0; } else { return -1; } } int main() { int n, i; scanf("%d", &n); for(i=0 ; i 더보기
PKU 2388. Who's in the Middle. AC #include main() { int n,arr[9999],i; scanf("%d",&n); for(i=0; i 더보기
PKU 2388. 누가 중간 녀석이냐? AC get~ #import int i=-1,buf[9999];int main(){while(cin>>buf[i++]);sort(buf,buf+i-1);cout 더보기
PKU 1804. Brainman. [판정:AC] #include #include void swap( int *x, int *y ) { int temp; temp = *x; *x = *y; *y = temp; } // with bubble sorting int ascendantOrdering( int *xAry, int length ) { int i; int j; int rtn = 0; for( i = 0; i i; j-- ) { if( xAry[j-1] > xAry[j] ) { swap( &xAry[j-1], &xAry[j] ); rtn++; } } } return rtn; } void main() { int cases; int terms; int i; int j; int *.. 더보기
PKU 1804. Brainman. AC #include main() { int arr[1000]; int cnt,i,j,k,cases,n,tmp; int sorted=1; scanf("%d",&cases); for(k=1;k 더보기
PKU [1804]. Brainman. [AC] #include int input[500]; int main() { int n, m, cnt = 0, i, j; int case_num = 1; scanf("%d", &n); while(n--) { scanf("%d", &m); for(i=0 ; i 더보기
PKU 1804. 뇌인간(?) get AC~ #include #include using namespace std; int main() { int x, y, i, j, n, data, buf[1000], cnt; cin >> n; for (x = 1; x > data; cnt = 0; for (y = 0; y > buf[y]; } for (i = data - 2; i >= 0; i--) { for (j = 0; j buf[j + 1]) { cnt++; swap(buf[j], buf[j + 1]); } } } cout 더보기
PKU 2649. Factovisors. AC 소인수분해 #include #include int m,n; int is_prime(int m) { int i, sqrn; sqrn=sqrt(m); for(i=2 ; i1;) { if(a%i==0) { a/=i; count++; } if(a%i!=0 || a==1) { if(count>0) { if(n/i 더보기
PKU 2649. Factovisor. get AC -_- #include #include #define TRUE 1 #define FALSE 0 int m, n; int isPrime(int m) { int i; if(m 더보기
PKU 2649. Factovisors. AC #include #include int m,n; int is_prime(int m) { int i; if(m 더보기
PKU [2649]. Factovisors. [AC] #include #include int chkPrime(int m); int main() { int n, m, i; int result; while(scanf("%d%d", &n, &m) != EOF) { if(m != 0) { if((m n) { print.. 더보기
PKU 2649. Factovisors. TLE네요... 으으 결국 받지 못했습니다...AC... 저는 2개 코드를 짰는데요... 처음은 링크드리스트를 이용한 코드입니다... #include #include typedef struct pnode{ int data; int count; struct pnode *next; }NODE; NODE *insert(NODE *p,int num) { NODE *temp,*curr,*prev; curr=p; prev=NULL; if(p==NULL){ p=(NODE *)malloc(sizeof(NODE)); p->data=num; p->count=0; p->count=p->count+1; p->next=NULL; return p; } else{ if(curr->data > num){ temp = (NODE *)malloc(si.. 더보기
PKU 2649. Factovisors. TLE #include #include int m,n; int is_prime(int a) { int i=2; int sqrn=sqrt(a); while(i 더보기
PKU 2649. Factovisors. TLE #include #include using namespace std; unsigned __int64 n; int GCD(int a, int b) { while (1) { if (a % b == 0 || b % a == 0) { break; } if (a > b) { a %= b; } else { b %= a; } } if (a % b == 0) { return b; } else { return a; } } bool isPrime(int a) { int i, limit; if (a n >> m) { if (....) { cout 더보기
PKU 2649. Factovisors. [판정:AC] 소스가 좀 길긴 한데 구현 자체는 그리 어렵지 않다고 생각합니다 #include #include int isPrime( int ); void factorize( int ); void factovisor( int, int ); // 1st row is primes, 2nd row is power of primes int primeSet[2][10] = {0}; int judge[10] = {0}; void main() { int n; int m; while( scanf("%d %d", &n, &m) != EOF ) { if( m == 0 ) printf("%d does not divide %d!\n", m, n); else factovisor( m, n ); } } int isPrime( int x ) {.. 더보기
PKU 1844. Sum. AC 네요 #include int main(void) { int temp,sum=0,count=0; scanf("%d",&temp); while(1){ if((sum >= temp) && (sum-temp)%2==0) break; else{ count++; sum=sum+count; } } printf("%d",count); return 0; } 음, 다행이도 AC를 받았네요 저의 경우는 우선 덧셈을 해서 입력값보다 커야하고, 더해진값과 입력값의 차이가 짝수인 경우를 판별하여 확인했습니다. 우선 1부터이므로 -가 붙어도 증가하지 않으므로 입력값보다 커질때까지 더하였고, -가 붙을때 더하였던 값이 취소되고 거기에서 -가 되므로 빠지는 값은 2n일것입니다. 예를 들어 1+2와 -1+2의 차이는 2*1 즉 2n의 차이가.. 더보기
PKU 1844, Sum. AC #include int i,in,sum; int main() { do { scanf("%d",&in); }while(in100000); for(i=sum=0;;i++) { sum+=i; if(sum>=in && (sum-in)%2==0) { printf("%d\n",i); break; } } } Run ID User Problem Result Memory Time Language Code Length Submit Time 4114901 jht009 1844 Accepted 204K 0MS C 296B 2008-09-23 15:25:49 매트릭스 포기해도 되나요???????????????????????????????? 헣헣헣 GG 더보기
PKU 1844. Sum. [판정:AC] #include int sigma( int k ) { return k*( k+1 )/2; } void main() { int s; int sum; int i; scanf("%d", &s); for( i = 1; ; i++ ) { sum = sigma(i); if( ( sum >= s ) && ( sum%2 == s%2 ) ) { printf("%d\n", i); break; } } } 이번 문제는 '저번에 비해' 너무 쉬워서 미칠 지경이군요 -_-; 풀이는 이렇습니다 우선 수열 {Sn}을 정의하는데, 'Sn = 1부터 n까지의 합'이라고 합시다 그러면 이 수열은 아래와 같은 값을 갖는데, 한가지 규칙이 있습니다 S1 = 1, S2 = 1 + 2 = 3, S3 = 1 + 2 + 3 = 6, S4 = 1 +.. 더보기
PKU 1844. Sum. AC get!~ #include int main() { int i, j, sum = 0; scanf("%d", &i); for (j = 1; j = i) { if (!((sum - i) % 2)) { printf("%d\n", j); break; } } } return 0; } 흐음. 이번에도 쉬운 문제이지요? 1부터 N까지 숫자를 나열해 두고, 각 숫자마다 부호를 아무렇게나 둔 다음, 부호까지 붙인 수들을 합해서 S가 되게 만들되, 그 N중 최소를 출력하는 겁니다. 제 솔루션은 간단합니다. 1부터 N까지의 합을 그냥 구합니다. -_-; 이 때 1부터 N까지의 합이 S보다 크다면, S는 1부터 N까지의 숫자중 몇개를 뽑아서 만들 수 있.. 더보기
PKU 1145, UVa 112. Tree Summing. [판정:AC & TLE] #include #include #define SIZE 2000 int isInt( double x ) { if( floor(x) == ceil(x) ) return 1; else return 0; } int isInHere( int x, int here[] ) { int i; for( i = 0; here[i] != -1; i++ ) { if( here[i] == x ) return 1; } return 0; } void pullOut( int pullThis, double list[], int *endKey, int keyList[], int etcList[] ) { int i; int del = 0; for( i = pullThis; i < *endKey; i++ ) { list[ i-2 ] = l.. 더보기