본문 바로가기

Solutions

PKU 2665. Trees. AC 이것도 풀이가 필요 없죠 #include int main() { int start, end, tree, n; scanf("%d %d", &tree, &n); while(tree+n) { tree++; while(n--) { scanf("%d %d", &start, &end); tree=tree-(end-start+1); } printf("%d\n", tree); scanf("%d %d", &tree, &n); } return 0; } 기말고사가 끝났어요 더보기
PKU 3030. Nasty Hacks. AC #include main() { int a, b, c, n; scanf("%d",&n); while(n--) { scanf("%d %d %d",&a,&b,&c); if(a>b-c) puts("do not advertise"); else if(a 더보기
PKU 2853. Sequence Sum Possibili. AC n을 더한 수의 개수로 나누면, 더한 값들의 평균값이 나옵니다. #include #include int run(int n) { int m, lmt, count=0; lmt=sqrt((int)2*n); for(m=2; m 더보기
UVa 562. Dividing Coins. [판정:RE] -_-; RE가 뭐하면 뜨는건지 잊어버려서 뭘 고쳐야될지 잘 모르겠음요 ㅋㅋㅋㅋ 활동하는 사람이 없으니 이거 원; #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 = 500; /* abbr. of minimum difference */ int minind; /* index, indexing when mind is r.. 더보기
PKU 3372. Candy Distribution. [판정:AC] N이 2의 거듭제곱일 때만 yes가 나오는게 맞았군요 -_-;; 문제에서 여러 케이스가 들어온다고 쓰여있었는데 못보고 EOF 처리를 하지 않아서 wa를 받았던 것 같습니다 ㅋㅋㅋ 소스는 올릴까 말까 고민중임요 -_-;; 마지막에 ac받은건 나름 숏코딩으로 줄여본겁니다 C 기준으로 24위에 안착해 있어요 ㅋㅋ 더보기
PKU 3372. Candy Distribution. [판정:WA] 처음에는 머리로 그림을 몇번 그려보다가 간단하게 생각해서 1부터 N-1까지( 엄밀히 말하면 0부터 N-1까지 )의 합이 N의 배수가 아니면 무조건 yes, 그 이외에는 no인줄 알고 #include void main() { __int64 n; scanf("%I64d", &n); if( (n-1)*n/2 % n ) printf("YES\n"); else printf("NO\n"); } 이렇게 짰다가 한번 wa를 받았고 -_-; 그 다음은 노트에 그림을 직접 그려보면서 체크해봤더니 N이 2의 거듭제곱일 때에 한해 yes가 나오길래 ( 2~12까지 체크해보고, 추가로 16을 체크해봤음 ) #include void main() { int n; scanf("%d", &n); while( n > 1 ) { if( .. 더보기
PKU 3224. Go for Lab Cup! [판정:AC] 몇자 안고치고 끝났네요 -_-; #include void main() { int n, temp; int winner, winsum; int wnr_high, wsum_high = 0; scanf("%d", &n); for( winner = 1; winner 더보기
PKU [3224]. Go for Lab Cup! [AC] #include int main() { int n; int row = 1; int column = 1; int temp = 0; int winner = 1; int input; int cntWin = 0; scanf("%d", &n); for(row=1 ; row 더보기
PKU 3224. Go for Lab Cup! [판정:WA] 행렬을 사용하지 않고 해볼랬더니 wa가 뜨네요 -_-; 그닥 틀린 부분은 없어보이는데; #include void main() { int n, temp; int winner, winsum; int wnr_high, wsum_high = 0; scanf("%d", &n); for( winner = 1; winner 더보기
PKU 2000. Gold Coins. AC #include int gold(int days) { int i, sum=0, time=0, coin=1; for(i=1; i 더보기
PKU 1547. Clay Bully. AC get. #include #include using namespace std; int main() { int num, sum, s[10], i, a, b, c, avg; string names[10], robber, robbed; while (cin >> num) { sum = 0; if (num == -1) { break; } for (i = 0; i > a >> b >> c >> names[i]; s[i] = a * b * c; sum += s[i]; } avg = sum / i; for (i = 0; i avg) { robber = names[i]; } if (s[i] < avg) { robbed = names[i]; } } cout 더보기
PKU 2000. Gold Coins. AC get. #include int main() { int input, input_first, count, p, pay; while(scanf("%d", &input)) { pay = 0; if (input == 0) { break; } input_first = input; count = 1; p = 1; while(input != 0) { input--; pay += count; if (count == p) { p = 1; count++; } else { p++; } } printf("%d %d\n", input_first, pay); } } 걍 열심히 돌리는게 답입니다 =ㅁ=...; 더보기
PKU 2853. Sequence Sum Possibilities. AC get. #include #include int main() { int n, num, input, limit, i, cnt; scanf("%d", &n); while(n--) { scanf("%d%d", &num, &input); cnt = 0; for (i = 1; input > 0; i++) { input -= i; if (!(input % i)) { cnt++; } } printf("%d %d\n", num, cnt - 1); } } ..... 숏코딩입니다. -_-; 더보기
PKU 2665. Trees. AC get. #include using namespace std; int main() { int trees, rodes, i, start, end; while (cin >> trees >> rodes) { if (trees == 0 && rodes == 0) { break; } trees++; for (i = 0; i > start >> end; trees -= (end - start + 1); } cout 더보기
PKU 3673. Cow Multiplication. AC get! #include #include char temp1[256], temp2[256]; int main() { int lt1, lt2, i, j, sum = 0; scanf("%s%s", temp1, temp2); lt1 = strlen(temp1); lt2 = strlen(temp2); for (i = 0; i < lt1; i++) { for (j = 0; j < lt2; j++) { sum = sum + (temp1[i] - '0') * (temp2[j] - '0'); } } printf("%d\n", sum); } 쉽습니다. 곱셈법이 변태같을 뿐; 더보기
PKU 1008, UVa 300. Maya Calendar. AC get. #include #include char *HaabMonth[18]={"pop", "no", "zip", "zotz", "tzec", "xul", "yoxkin", "mol", "chen", "yax", "zac", "ceh", "mac", "kankin", "muan", "pax", "koyab", "cumhu"}; char *TzolkinDay[20]={"imix", "ik", "akbal", "kan", "chicchan", "cimi", "manik", "lamat", "muluk", "ok", "chuen", "eb", "ben", "ix", "mem", "cib", "caban", "eznab", "canac", "ahau"}; int main() { int n, i; int year, mon.. 더보기
PKU 1547. Clay Bully. [판정:RE] 우선, 스파킹군이 dimension을 잘못 번역해놓아서 (고의는 아니었겠지만) 문제의 이해가 다소 어려웠습니다 =_=; 여기선 dimension을 완성된 과제물의 부피로 해석해야 입출력 예시와 들어맞습니다 ㅋㅋ #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[8]; int i; while( dscanf(&n) != -1 ) { int temp; char tempstr[12]; int min, minindex; int max, maxind.. 더보기
PKU 2853. Sequence Sum Possibilities. [판정:TLE] ㅋㅋ 이럴수가 :( 인수분해를 하고 나서 그 인수들을 다시 곱하는 방법으로 약수들을 다 구했습니다만 -_-; (이때, 인수분해를 통해 나온 인수들에 2를 하나 추가해서 구했습니다) 여전히 TLE가 뜨네요 ㅠ (Run ID : 5826748) #include #include #include int integer( double d ); int isprime( int n ); void reset(); void factorize( int n ); int spread(); int possibility( int n ); // 1st row is primes, 2nd row is power of primes int primeset[2][11] = {0}; int added[11] = {1, 0}; // 1 + pow.. 더보기
PKU 2000. Gold Coins. [판정:AC] 역시 -_-; 이건 쉬운문제였군요 -_-ㅋ 군수열을 응용하면 간단하게 풀립니다 :) #include int dscanf( int *pnum ) { scanf("%d", pnum); return *pnum; } int sigma_k( int n ) { return n * (n+1) / 2; } int sigma_ksquare( int n ) { return n * (n+1) * (2*n+1) / 6; } void main() { int day; int temp, i; while( dscanf(&day) != 0 ) { i = 0; do { i++; temp = sigma_k(i); } while( day >= temp ); i--; temp = sigma_k(i); if( day == temp ) { pr.. 더보기
PKU 2853. Sequence Sum Possibilities. [판정:TLE] ㅋㅋ 또 TLE입니다 -_-; 첫번째 TLE는 요놈이구요 (Run ID : 5768623) #include #include #include int integer( double d ) { if( floor(d) == ceil(d) ) return 1; else return 0; } int isprime( int n ) { int i, sq; if( n 더보기
PKU 2853. Sequence Sum Possibilities. [판정:TLE] ㅋㅋ 오랜만에 받아보는 TLE입니다 소스는 지금 활동하는 사람이 없어서 안올리고 판정 결과 찍은것만 올릴랬더니 이마저도 시스템 문제로 사진 업로드 불가 ㅋㅋ.. 더보기
PKU 2665. Trees. [판정:AC] 처음에 문제를 제대로 안읽고선 공사 구간끼리 겹치는가의 여부를 판단하는 부분까지 만들었다가 -_-; 지웠습니다 ㅋㅋ #include void main() { int l, m; int low, up; int trees; while(1) { scanf("%d %d", &l, &m); if( l == 0 && m == 0 ) break; trees = l + 1; while( m > 0 ) // instead of "for" repeatation { scanf("%d %d", &low, &up); trees -= ( up - low + 1 ); m--; } printf("%d\n", trees); } } 어려운 문제는 아니었군요 =ㄴ= 더보기
UVa 300. Maya Calendar. AC # Problem Verdict Language Run Time Submission Date 7273761 300 Maya Calendar Accepted ANSI C 0.008 2009-07-26 09:43:44 haab력을 일수로 계산해서 다시 tzolkin으로 변환합니다. #include #include int get_haab() { int y, m, d, days; char *names[20]={"pop", "no", "zip", "zotz", "tzec", "xul", "yoxkin", "mol", "chen", "yax", "zac", "ceh", "mac", "kankin", "muan", "pax", "koyab", "cumhu", "uayet"}; char tmp[7]; scanf("%d.. 더보기
PKU 3673. Cow Multiplication. AC #include int main() { char str[2][11]; int i, j, sum=0; scanf("%s %s", str[0], str[1]); for(i=0; str[0][i]; i++) for(j=0; str[1][j]; j++) sum += (str[0][i]-'0') * (str[1][j]-'0'); printf("%d", sum); return 0; } 저도 그냥 그대로 풀었습니다. 더보기
PKU 3673. Cow Multiplication. [판정:AC] 무식한 문제는 무식한 해결이 답이죠 -_-; #include void main() { int board[2][10] = {0}; int a, b; int acol, bcol; int i, j, temp; scanf("%d %d", &a, &b); acol = 0; while( a > 0 ) { board[0][acol] = a % 10; a /= 10; acol++; } bcol = 0; while( b > 0 ) { board[1][bcol] = b % 10; b /= 10; bcol++; } temp = 0; for( i = 0; i < acol; i++ ) { for( j = 0; j < bcol; j++ ) { temp += board[0][i] * board[1][j]; } } printf("%.. 더보기
UVa 300. Maya Calendar. [판정:AC] 번역 끝에 주석을 달아주었더라면 좋았을 문제였습니다 -_-; 가만보면 uva문제는 좀 더럽다는 느낌이 -_- Haab력(曆)의 경우 1년 365일이 열아홉달로 이루어져있고, 그 중 1월~18월까지는 매 월 스무번째 일까지(0~19), 19월에 한해서 다섯번째 일까지(0~4)만 있는 역법입니다 그러니까 문제의 input에 넣어야 되는 Haab력의 구성은 일(서수). 월 년 이 됩니다 Tzolkin력(曆)의 경우 1년이 260일로 이루어져있고, 그것을 20일씩 13개 구간으로 나누어놓은 역법입니다 각 날들은 모두 다르게 구분되어있고, 그것들은 두가지 주기(13, 20)에 의해 우리가 쓰는 60갑자의 그것과 같은 방식을 띄게 됩니다 번역문의 중간쯤 보면 '각 해의 시작을 나타내는 날들은 다음과 같이…' 하고 .. 더보기
PKU 1218. THE DRUNK JAILER. [판정:AC] 결론부터 말하자면 이 문제는 감방의 수를 n이라고 했을 때, n 이하의 제곱수가 몇개냐고 묻는 문제입니다 -_-; 저도 처음엔 unique님의 댓글을 보고 의아해했는데, 문이 열렸다 닫혔다 하는 과정을 좀 생각해보니 k번째 문이 조작되는 회수는 k의 양의 약수의 개수만큼이라는 것을 알게 되었습니다 ㅋ 감방의 문은 처음에 닫혀있기 때문에 홀수번 조작되어야 죄수들이 탈출할 수 있겠죠 즉, 양의 약수의 개수가 홀수개인 것들이 몇개냐를 묻는 것인데 양의 약수의 개수가 홀수개인 것들은 오직 제곱수들뿐입니다 -_-ㅋ #include #include void main() { int n; int doors, open; scanf("%d", &n); while( n > 0 ) { scanf("%d", &doors); o.. 더보기
PKU1218. The Drunk Jailer. Ac get =_=... #include #include using namespace std; int main() { int n, temp, i; cin >> n; for (i = 0; i > temp; cout 더보기
PKU 2234. Matches Game. AC get -_-;;; #include int main() { int n, k, sum; while (~scanf("%d", &n)) { sum = 0; while (n--) { scanf("%d", &k); sum ^= k; } if (sum) { printf("Yes\n"); } else { printf("No\n"); } } return 0; } 쩝... 초 간결한 코드입니다. -_-;; 그냥 단순하게 정해진 최대치를 서로 계속 가져간다 했을때, 정해진 최대치에 맞아 떨어져서 최종 갯수가 0이 아니면 이긴거고, 0이면 진거지요 뭐 =ㅁ=;; 더보기
PKU 2243. Knight Moves. AC #include int table[8][8]; void fill(int y, int x, int n) { if(table[y][x] 7 || x>7 || y 더보기