본문 바로가기

Solutions

PKU 2245. Lotto. WA -_- 니미; #include using namespace std; int dataset[13]; int nums; int outputs[6]; void getPerm(int num, int lev) { int iCnt; if (lev > 5) { for (iCnt = 0; iCnt < 5; iCnt++) { cout dataset[iCnt]; } for (iCnt = 0; iCnt < nums - 6; iCnt++) { getPerm(iCnt, 0); } } return 0; } Mr.K의 방법과 유사합니다만, 출력이 처리에 결합된 부분이 다릅니다. 이 부분에서 실수를 좀 했었는데, 마지막 함수에서 출력을 몰아서 해야 하건만, 매 프로세스마다 출력하도록 실수했었죠; 1 2 3 4 5 6 7중 6개를 뽑아야 한다면 1.. 더보기
PKU 2245. Lotto. [판정:AC] 예압 일단 인증 ㄱㄱ요 많이 피곤한 상태에서 졸릴락 말락 하면서 풀었더니 좀 코드가 지저분한 감이 없지 않아 있는 것 같은데 그래도 그냥 올림요 ㅋㅋ #include #include int nc6( int n ) { // this function returns value of nC6 int res = 1; int i; for( i = 0; i < 6; i++ ) { res *= n-i; } res /= 720; return res; } int dscanf( int *pnum ) { scanf("%d", pnum); return *pnum; } void main() { int n; int *nums; int dmy[6]; // dummy variable set int i, j, k; while( dscan.. 더보기
PKU 2017 Speed Limit [AC] #include int main(void) { int i; int set; int miles_sum; int mile, time; int prev_time; while(1) { scanf("%d", &set); if(set==-1) return 0; prev_time = 0; miles_sum = 0; for(i=0; i 더보기
PKU 2390. Bank Interest. AC get -_- main(a){double b,c;scanf("%lf%lf%d",&b,&c,&a);printf("%d\n",(int)floor(c*pow(1+b/100, a)));} 다시한번 숏코딩 ㄱㄱ 더보기
PKU 2027. No Brainer [AC] 지난 것들을 하나씩 해보려 합니다. 1번부터 하려는데, 시간없는 주말에 하려니 좀 짜증나길래, 2번을 풀어봅니다. 1분이면 ok군요 이건. #include int main(void) { int cases, a, b; scanf("%d", &cases); while(cases>0) { scanf("%d %d", &a, &b); if(a>=b) { printf("MMM BRAINS\n"); } else { printf("NO BRAINS\n"); } cases--; } } 더보기
PKU 2390. Bank Interest [AC] #include int main(void) { int i, r, m, y; double result; scanf("%d %d %d", &r, &m, &y); result = m; for(i=0; i 더보기
PKU 2390. Bank Interest. [판정:AC] 선ㅋ빵ㅋ 아침출근이라 안풀리면 어쩌나 걱정했는데 한큐에 끝ㅋ #include #include void main() { double r; double m; int y; scanf("%lf %lf %d", &r, &m, &y); printf("%d\n", (int)floor( m * pow(1+r/100, y) )); } 더보기
PKU 2871. A Simple Question of Chemistry. AC get -_-! main(){float p,c;scanf("%f%f",&p,&c);for(;c!=999;printf("%.2f\n",c-p),p=c,scanf("%f",&c));puts("End of Output\n");} 숏코딩작렬 더보기
PKU 2871. A Simple Question of Chemistry [AC] #include int main(void) { float prev, curr; scanf("%f", &prev); while(1) { scanf("%f", &curr); if(curr == 999) { break; } printf("%.2f\n", curr-prev); prev=curr; } printf("End of Output\n"); return 0; } 단순히 float 수 두개의 차이값만을 출력하면 되는 문제라 쉽네요. 더보기
PKU 2871. A Simple Question of Chemistry. [판정:AC] 심플하죠 =_= 마지막에 End of Output 출력하는 것만 안 잊어버리면 한방에 AC받았을텐데 -_-; #include #include using namespace std; int main() { vector v; float fl; int i, j; for( i = 0; fl != 999; i++ ) { cin >> fl; if( fl == 999 ) { continue; } v.push_back(fl); } for( i--, j = 1; j < i; j++ ) { printf("%.2lf\n", v[j] - v[j-1]); } printf("End of Output\n"); return 0; } 더보기
PKU [2871]. A Simple Question of Chemistry [AC] #include int main() { float currInput; float prevInput = 0.0; float result; scanf("%f", &currInput); while(1) { prevInput = currInput; scanf("%f", &currInput); if((int)currInput == 999) { printf("End of Output"); printf("\n"); break; } result = (currInput - prevInput); printf("%.2f", result); printf("\n"); } return 0; } In PKU Judge System. 현재 인풋값과 직전 인풋값의 차이를 출력하면 끝입니다. - 현재 실습실 컴퓨터 세팅하면서 컴파일 확.. 더보기
PKU 3589. Number-guessing Game [AC] 첫 포스팅이군요. 늦어서 죄송합니다. 항상 UVA 문제만 조금씩 풀어보다가 PKU 문제는 처음으로 풀어봤네요. 푼 후에 다른분 솔루션 보니 뭐. 코드는 비슷하네요. 더보기
PKU 3372. Candy Distribution. AC 저도 2의 제곱수 (n & (n - 1)) == 0 #include int main() { int n; while(scanf("%d", &n) != EOF) { if((n & (n - 1)) == 0) puts("YES"); else puts("NO"); } return 0; } main(n,b){while(scanf("%d",&n)>-1){puts("NO\0YES"+((n&(n-1)) 더보기
PKU 3589. Number-guessing Game. AC get -_- #include int main() { int i, x, y, ca, cb; char j[5], k[5]; scanf("%d", &i); for (;i--;) { ca = 0; cb = 0; scanf("%s%s", j, k); for (y = 0; y < 4; y++) { for (x = 0; x < 4; x++) { if (j[y] == k[x]) { if (x == y) { ca++; } else { cb++; } } } } printf("%dA%dB\n", ca, cb); } return 0; } 풀라다 보니 뭔가 익숙해서 검색해보니 푼 문제더군. -_-; 숫자와 위치까지 같으면 A, 숫자만 같고 위치가 다르면 B로 카운팅해 출력하면 됩니다. 더보기
PKU 3589. Number-guessing Game. [판정:AC] 오랜만에 올리는 문제라 일부러 쉬운걸 올렸는지 어쩐지는 몰라도 일단 쉽게 AC -_-; 근데 새로 들어온 분은 문제풀이 하시는거임? 이번달 문제풀이현황 올릴 때 넣을까 말까 정해야되는데 -_-a 그리고 활동 없는사람 2명 정리 할건지 말건지 얘기좀 ㅇㅇ 더보기
PKU 3224. Go for Lab Cup! AC #include int main() { int n, i, j, win, max, cand, tmp; scanf("%d", &n); max=0; for(i=1; i 더보기
PKU 1989. The Cow Lineup, AC get -_-;; 슈....슈바;; 설마 이따위일 줄이야;;; #include #include using namespace std; #define max 10001 int table[max]; int main() { int N, K, remain, temp, ans = 1, i; cin >> N >> K; remain = K; for(i = 0; i > temp; if (!table[temp]) { table[temp] = true; remain--; } if(remain == 0) { remain = K; memset(table, false, sizeof(table)); ans++; } } cout 더보기
UVa 562. Dividing coins. AC get -_-; #include using namespace std; #define max 50002 int coinVal[101], coinNum, sum; int pos[max]; int main() { int n, i, half, j, k; cin >> n; while (n--) { sum = 0; cin >> coinNum; for(i = 0; i > coinVal[i]; sum += coinVal[i]; } half = sum / 2; pos[0] = 1; for(j = 0; j half) { continue; } for(k = half - coinVal[j]; k >= 0; k--) { if(pos[k]) {.. 더보기
PKU 2853. Sequence Sum Possibilities. [판정:AC] 대망의 AC입니다 :D 최근에 나온 문제들 중 몇개는 도통 안풀리길래 잠시 접어두고 전에 풀다 막힌 것들 중 이놈을 다시 잡았습니다 알고리즘에 대한 이야기는 http://studyinglw.tistory.com/587 의 아랫부분에 나와있으니 참고하세요 #include #include using namespace std; bool isprime( int n ); int intpow( int m, int n ); void clear(); void factorize( int n ); void spread(); int possibility( int n ); int primeset[10] = {1, 0}; int primeexp[10] = {0}; int *factors; int elements = 1; // .. 더보기
PKU 2845. 01000001. AC 0더하기 0의 결과가 출력되지 않는것만 고쳤습니다. 배열 3개 사용하나 90개 사용하나 메모리사용량은 별 차이가 없네요. #include typedef struct { unsigned dats[3]; }bin; void copy(char *src, bin *dest) { int len, i; memset(&(dest->dats), 0, sizeof(int)*3); len=strlen(src)-1; for(i=0; len>=0; len--, i++) dest->dats[i/32]|=((1&(src[len]-'0'))dats[i]=carry&(((long long)1=32; } } void print(bin src) { int i; for(i=95; !(src.dats[i/32]&(1>(i%32))&1); .. 더보기
PKU 2845. 01000001. WA 또 WA입니다. 어디가 잘못된건지... #include typedef struct { unsigned dats[3]; }bin; void copy(char *src, bin *dest) { int len, i; memset(&(dest->dats), 0, sizeof(int)*3); len=strlen(src)-1; for(i=0; len>=0; len--, i++) dest->dats[i/32]|=((1&(src[len]-'0'))dats[i]=carry&(((long long)1=32; } } void print(bin src) { int i; for(i=95; !(src.dats[i/32]&(1>(i%32))&1); } main() { int n, i; char bits[82]; bin a, b; .. 더보기
PKU [3372]. Candy Distribution [AC] #include int main() { int iNum; while(scanf("%d", &iNum) != EOF) { if((iNum & ~(iNum - 1)) == iNum) { printf("YES\n"); } else { printf("NO\n"); } } return 0; } In PKU Judge System. 간단합니다. Child 의 Number 가 2의 제곱수일 경우에는 YES. 그렇지 않다면 NO 가 되더군요. (iNum & ~(iNum - 1)) == iNum 코드에서 2의 제곱수인지를 검출합니다. 상당히 잘 알려진 방법이죠. 더보기
PKU 1989. The Cow Lineup. [판정:TLE] 일단, 제 문제해석에 댓글달아주신 milk님 감사합니다 (__) 기존의 알고리즘을 접어두고 이 방법으로 주워먹기하려 했으나 결과는 이렇네요 ㅋㅋ (가장 최근의 2건) 아무래도 소수열을 전부 살펴보는 것이다보니 N이 커지면서 시간이 많이 증가하는듯 합니다 시간 줄이는 방법을 좀 연구해봐야 할듯; #include int N, K; int *cows; void clear( int ary[], int sz ); int seek( int ary[] ); int main() { int i; scanf("%d %d", &N, &K); cows = new int[N]; for( i = 0; i < N; i++ ) { scanf("%d", &cows[i]); } printf("%d\n", seek(cows)); retu.. 더보기
PKU 3224. Go for lap Cup! AC get -_- #include using namespace std; int main() { int n, set[100], i, j, k; while (cin >> n) { for (i = 0; i > k; if (k >= 3) { set[i]++; } } } k = 0; for (i = 0; i set[k]) { k = i; } } cout 더보기
PKU 3372. Candy Distribution. AC get -_- #include using namespace std; int main() { int n; while (cin >> n) { while (!(n % 2) && n > 2) { n /= 2; } if (n == 1 || n == 2) { cout 더보기
PKU 1989. The Cow Lineup. [판정:WA] 스파킹 미안 -_-; 난 이게 한계임 #include int N, K; int *cows; int seek( int ary[] ); int main() { int i; scanf("%d %d", &N, &K); cows = new int[N]; for( i = 0; i N ) return 1; int x, y, z; int *check; int power = 1; // K's exponent, caution: overflow int bound; if( N % K ==.. 더보기
모두들 메리크리스마스 N 해피뉴이어~ 는 개뿔 -_- PKU 1989. The Cow Lineup. [판정:TLE] 흑흑 같이 바람쐬러 나갈 여친 없는 것도 모자라서 저녁에 [군인놈 1명 공익놈 1명 예비역 1명]들과 모여서 술마시기로 했음 더러운 세상 ㅋㅋㅋㅋㅋㅋ 처음의 CE는 main함수의 return type이 void인 탓에 :( 기본 아이디어는 solving process에 올려서 트랙백을 달든지 하겠구요 -_-; 그 아이디어를 바탕으로 처음 끄적거렸던게 아래의 소스이고, #include int N, K; int *cows; int seek( int ary[] ); void main() { int i; scanf("%d %d", &N, &K); cows = new int[N]; for( i = 0; i < N; i++ ) { scanf("%d", &cows[i]); } printf("%d\n", seek(co.. 더보기
PKU 1547. Clay Bully. [판정:AC] 최근에 어떤분이 제 [Dividing Coins - RE] 글에다 RE뜨는 이유를 댓글로 적어주셨습니다 그 덕분에 현재 RE에서 WA로 발전한 상태입니다 -_-; 그런데 이것도 같은 이유였더군요 ㅋㅋ 문득 살펴보다가 내가 왜 문제를 제대로 안 읽었을까 하고 반성했다는 :( #include #include typedef struct student { int dimension; char name[12]; } student; int dscanf( int *pnum ) { scanf("%d", pnum); return *pnum; } void main() { int n; student list[10]; int i; while( dscanf(&n) != -1 ) { int temp; char tempstr[12].. 더보기
UVa 562. Dividing Coins. [판정:WA] 방금 전까지 몇번을 수정해보고 제출했으나 전부 WA입니다 거의 모든 예외를 처리했다고 생각했는데 뭔가 남아있나봐요 -_-; (↓실제 제출할 때는 테스트 케이스들은 빼고 제출했습니다) #include void clear( int ary[] ) { int i; for( i = 0; i < 100; i++ ) { ary[i] = 0; } } int mindiff( int ary[], int s ) { int i, j; int sum = 0; int opp; /* abbr. of opponent, take from sum */ int carry = 0; /* addition to opp */ int diff; int mind = 100000; /* abbr. of minimum difference */ int .. 더보기
PKU 1218. THE DRUNK JAILER. AC 문이 홀수번 열리고 닫히면 되니 약수의 개수가 홀수개인 제곱수의 개수를 찾아 출력합니다. #include #include int is_square(int n) { int a, b, count=1; switch(n%10) { case 2: case 3: case 7: case 8: return 0; break; } for(a=2, b=0; (n&1)==0; n>>=1, b++); count*=(b+1); for(a=3; n>1; a+=2) { for(b=0; n%a==0; n/=a, b++); count*=(b+1); } return (count&1); } int run(int n) { int i, count=0; for(i=1; i 더보기