mirror of
https://github.com/Kiritow/OJ-Problems-Source.git
synced 2024-03-22 13:11:29 +08:00
Codes included.
This commit is contained in:
parent
5df649e615
commit
f0d1189839
3
OpenJudge/ch0101_冰封/01.pas
Normal file
3
OpenJudge/ch0101_冰封/01.pas
Normal file
|
@ -0,0 +1,3 @@
|
|||
begin
|
||||
writeln('Hello, World!');
|
||||
end.
|
5
OpenJudge/ch0101_冰封/02.pas
Normal file
5
OpenJudge/ch0101_冰封/02.pas
Normal file
|
@ -0,0 +1,5 @@
|
|||
var a, b, c:longint;
|
||||
begin
|
||||
readln(a, b, c);
|
||||
writeln(b);
|
||||
end.
|
24
OpenJudge/ch0101_冰封/10.pas
Normal file
24
OpenJudge/ch0101_冰封/10.pas
Normal file
|
@ -0,0 +1,24 @@
|
|||
begin
|
||||
writeln(' ********');
|
||||
writeln(' ************');
|
||||
writeln(' ####....#.');
|
||||
writeln(' #..###.....##....');
|
||||
writeln(' ###.......###### ### ### ### ###');
|
||||
writeln(' ........... #...# #...# #...# #...#');
|
||||
writeln(' ##*####### #.#.# #.#.# #.#.# #.#.#');
|
||||
writeln(' ####*******###### #.#.# #.#.# #.#.# #.#.#');
|
||||
writeln(' ...#***.****.*###.... #...# #...# #...# #...#');
|
||||
writeln(' ....**********##..... ### ### ### ###');
|
||||
writeln(' ....**** *****....');
|
||||
writeln(' #### ####');
|
||||
writeln(' ###### ######');
|
||||
writeln('############################################################## ##################################');
|
||||
writeln('#...#......#.##...#......#.##...#......#.##------------------# #...#......#.##------------------#');
|
||||
writeln('###########################################------------------# ###############------------------#');
|
||||
writeln('#..#....#....##..#....#....##..#....#....##################### #..#....#....#####################');
|
||||
writeln('########################################## #----------# ############## #----------#');
|
||||
writeln('#.....#......##.....#......##.....#......# #----------# #.....#......# #----------#');
|
||||
writeln('########################################## #----------# ############## #----------#');
|
||||
writeln('#.#..#....#..##.#..#....#..##.#..#....#..# #----------# #.#..#....#..# #----------#');
|
||||
writeln('########################################## ############ ############## ############');
|
||||
end.
|
26
OpenJudge/ch0105_冰封/15.c
Normal file
26
OpenJudge/ch0105_冰封/15.c
Normal file
|
@ -0,0 +1,26 @@
|
|||
#include<stdio.h>
|
||||
|
||||
int a,i,m,n;
|
||||
int b[20],cmin,cmax;
|
||||
|
||||
int main(void){
|
||||
int cc = 0;
|
||||
scanf("%d",&a);
|
||||
scanf("%d %d",&m,&n);
|
||||
cc = (n*1000)/m;
|
||||
cmax = cc + 50;
|
||||
cmin = cc - 50;
|
||||
for(i = 0; i < a-1; i++){
|
||||
scanf("%d %d",&m,&n);
|
||||
b[i] = (n*1000)/m;
|
||||
}
|
||||
|
||||
for(i = 0; i < a-1; i++){
|
||||
if(b[i] > cmax) printf("better\n");
|
||||
else if(b[i] < cmin) printf("worse\n");
|
||||
else printf("same\n");
|
||||
}
|
||||
|
||||
// getchar();getchar();getchar();getchar();getchar();getchar();getchar();
|
||||
return 0;
|
||||
}
|
21
OpenJudge/ch0105_冰封/37.c
Normal file
21
OpenJudge/ch0105_冰封/37.c
Normal file
|
@ -0,0 +1,21 @@
|
|||
#include<stdio.h>
|
||||
#include<stdlib.h>
|
||||
int main(void){
|
||||
int a,b,c;
|
||||
int i,j;
|
||||
char d;
|
||||
scanf("%d %d %c %d",&a,&b,&d,&c);
|
||||
for(i = 0;i < a;i++){
|
||||
for(j = 0;j < b;j++){
|
||||
if((c == 1)||(i == 0)||(i == a-1)||(j == 0)||(j == b-1)){
|
||||
putchar(d);
|
||||
}
|
||||
else{
|
||||
putchar(' ');
|
||||
}
|
||||
}
|
||||
putchar('\n');
|
||||
}
|
||||
// system("pause");
|
||||
return 0;
|
||||
}
|
13
OpenJudge/ch0105_冰封/38.c
Normal file
13
OpenJudge/ch0105_冰封/38.c
Normal file
|
@ -0,0 +1,13 @@
|
|||
#include<stdio.h>
|
||||
|
||||
int main(int argc,char** argv){
|
||||
int i,j;
|
||||
scanf("%d",&i);
|
||||
for(j = 2; j < i/2; j++ ){
|
||||
if(i%j == 0){
|
||||
printf("%d",i/j);
|
||||
break;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
18
OpenJudge/ch0105_冰封/40.cpp
Normal file
18
OpenJudge/ch0105_冰封/40.cpp
Normal file
|
@ -0,0 +1,18 @@
|
|||
#include <stdio.h>
|
||||
int main(){
|
||||
int n,i,j;
|
||||
scanf("%d", &n);
|
||||
int ans = 0, count=0;
|
||||
i=1;
|
||||
for(i=1;i<=n;i++){
|
||||
for(j=1;j<=i;j++){
|
||||
ans+=i;
|
||||
count++;
|
||||
if(count==n){
|
||||
printf("%d", ans);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
13
OpenJudge/ch0106_冰封/01.c
Normal file
13
OpenJudge/ch0106_冰封/01.c
Normal file
|
@ -0,0 +1,13 @@
|
|||
#include <stdio.h>
|
||||
|
||||
int main(int argc, char* argv[]) {
|
||||
int a[1000], n, i, cnt = 0, std;
|
||||
scanf("%i", &n);
|
||||
for(i = 0; i < n; i++)
|
||||
scanf("%i", &a[i]);
|
||||
scanf("%i", &std);
|
||||
for(i = 0; i < n; i++)
|
||||
if(a[i] == std) cnt++;
|
||||
printf("%i", cnt);
|
||||
return 0;
|
||||
}
|
15
OpenJudge/ch0106_冰封/02.c
Normal file
15
OpenJudge/ch0106_冰封/02.c
Normal file
|
@ -0,0 +1,15 @@
|
|||
#include<stdio.h>
|
||||
int a[10];
|
||||
int main(void){
|
||||
int b,j = 0, i;
|
||||
for(i = 0; i < 10; i++)
|
||||
scanf("%d",&a[i]);
|
||||
scanf("%d",&b);
|
||||
b += 30;
|
||||
for(i = 0; i < 10; i++){
|
||||
if(a[i]<=b)
|
||||
j++;
|
||||
}
|
||||
printf("%d",j);
|
||||
return 0;
|
||||
}
|
20
OpenJudge/ch0106_冰封/03.c
Normal file
20
OpenJudge/ch0106_冰封/03.c
Normal file
|
@ -0,0 +1,20 @@
|
|||
#include <stdio.h>
|
||||
|
||||
int main(int argc, char* argv[]) {
|
||||
int a[10], i, cnt = 0;
|
||||
for(i = 0; i < 10; i++)
|
||||
scanf("%i", &a[i]);
|
||||
printf("%.1f",
|
||||
a[0] * 28.9 +
|
||||
a[1] * 32.7 +
|
||||
a[2] * 45.6 +
|
||||
a[3] * 78.0 +
|
||||
a[4] * 35.0 +
|
||||
a[5] * 86.2 +
|
||||
a[6] * 27.8 +
|
||||
a[7] * 43.0 +
|
||||
a[8] * 56.0 +
|
||||
a[9] * 65.0
|
||||
);
|
||||
return 0;
|
||||
}
|
19
OpenJudge/ch0106_冰封/04.c
Normal file
19
OpenJudge/ch0106_冰封/04.c
Normal file
|
@ -0,0 +1,19 @@
|
|||
#include<stdio.h>
|
||||
|
||||
int b[100];
|
||||
|
||||
int main(void){
|
||||
int a, i;
|
||||
|
||||
scanf("%d",&a);
|
||||
|
||||
for(i = 0; i < a; i++ ){
|
||||
scanf("%d",&b[i]);
|
||||
}
|
||||
|
||||
for(i = a-1; i >= 0; i-- ){
|
||||
printf("%d ",b[i]);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
21
OpenJudge/ch0106_冰封/05.c
Normal file
21
OpenJudge/ch0106_冰封/05.c
Normal file
|
@ -0,0 +1,21 @@
|
|||
#include <stdio.h>
|
||||
|
||||
int main(int argc, char* argv[]) {
|
||||
int i, n, a0 = 0, a1 = 0, a2 = 0, a3 = 0;
|
||||
scanf("%i", &n);
|
||||
for(i = 0; i < n; i++) {
|
||||
int k;
|
||||
scanf("%i", &k);
|
||||
if(k < 19) {
|
||||
a0++;
|
||||
} else if(k < 36) {
|
||||
a1++;
|
||||
} else if(k < 61) {
|
||||
a2++;
|
||||
} else {
|
||||
a3++;
|
||||
}
|
||||
}
|
||||
printf("%.2f%%\n%.2f%%\n%.2f%%\n%.2f%%", a0 * 100.0 / n, a1 * 100.0 / n, a2 * 100.0 / n, a3 * 100.0 / n);
|
||||
return 0;
|
||||
}
|
32
OpenJudge/ch0106_冰封/06.cpp
Normal file
32
OpenJudge/ch0106_冰封/06.cpp
Normal file
|
@ -0,0 +1,32 @@
|
|||
|
||||
#include<stdio.h>
|
||||
#include<stdlib.h>
|
||||
#include<iostream>
|
||||
|
||||
using namespace std;
|
||||
|
||||
int main(void){
|
||||
bool aa[10002];
|
||||
long i,j;
|
||||
long a,b;
|
||||
long l,m;
|
||||
cin>>l>>m;
|
||||
for(i = 0; i <= l; i++){
|
||||
aa[i] = true;
|
||||
}
|
||||
for(i = 0; i < m; i++){
|
||||
cin>>a>>b;
|
||||
for(j = a; j <= b; j++){
|
||||
aa[j] = false;
|
||||
}
|
||||
}
|
||||
j = 0;
|
||||
for(i = 0; i <= l; i++){
|
||||
if(aa[i]){
|
||||
j++;
|
||||
}
|
||||
}
|
||||
cout<<j;
|
||||
// system("pause");
|
||||
return 0;
|
||||
}
|
21
OpenJudge/ch0106_冰封/08.c
Normal file
21
OpenJudge/ch0106_冰封/08.c
Normal file
|
@ -0,0 +1,21 @@
|
|||
#include <stdio.h>
|
||||
|
||||
int main(int argc, char* argv[]) {
|
||||
int a[1000], b[1000], n, na, nb, i, ret = 0;
|
||||
scanf("%i %i %i", &n, &na, &nb);
|
||||
for(i = 0; i < na; i++)
|
||||
scanf("%i", &a[i]);
|
||||
for(i = 0; i < nb; i++)
|
||||
scanf("%i", &b[i]);
|
||||
for(i = 0; i < n; i++) {
|
||||
if( a[i%na] == 0 && b[i%nb] == 2 ||
|
||||
a[i%na] == 2 && b[i%nb] == 5 ||
|
||||
a[i%na] == 5 && b[i%nb] == 0 ) {
|
||||
ret++;
|
||||
} else if(a[i%na] != b[i%nb]) {
|
||||
ret--;
|
||||
}
|
||||
}
|
||||
printf("%s", ret ? ret > 0 ? "A" : "B" : "draw");
|
||||
return 0;
|
||||
}
|
14
OpenJudge/ch0106_冰封/09.c
Normal file
14
OpenJudge/ch0106_冰封/09.c
Normal file
|
@ -0,0 +1,14 @@
|
|||
#include <stdio.h>
|
||||
|
||||
int main(int argc, char* argv[]) {
|
||||
int a[1000], b[1000], cnt, i, ret = 0;
|
||||
scanf("%i", &cnt);
|
||||
for(i = 0; i < cnt; i++)
|
||||
scanf("%i", &a[i]);
|
||||
for(i = 0; i < cnt; i++)
|
||||
scanf("%i", &b[i]);
|
||||
for(i = 0; i < cnt; i++)
|
||||
ret += a[i] * b[i];
|
||||
printf("%i", ret);
|
||||
return 0;
|
||||
}
|
73
OpenJudge/ch0106_冰封/10-wrong-answer.c
Normal file
73
OpenJudge/ch0106_冰封/10-wrong-answer.c
Normal file
|
@ -0,0 +1,73 @@
|
|||
#include<stdio.h>
|
||||
#include<stdlib.h>
|
||||
#include<string.h>
|
||||
|
||||
char *jjfly(char *s) {
|
||||
char *h, *t;
|
||||
char c;
|
||||
h = s;
|
||||
t = s + strlen(s) - 1;
|
||||
while (h < t) {
|
||||
c = *h;
|
||||
*(h++) = *t;
|
||||
*(t--) = c;
|
||||
}
|
||||
return s;
|
||||
}
|
||||
|
||||
int main(int argc, char* argv[]) {
|
||||
char *a,*b,*c;
|
||||
int i,j,max,min;
|
||||
int ifis = 0;
|
||||
a = (char*)malloc(sizeof(char)*300);
|
||||
b = (char*)malloc(sizeof(char)*300);
|
||||
c = (char*)malloc(sizeof(char)*300);
|
||||
|
||||
scanf("%s",a);
|
||||
scanf("%s",b);
|
||||
|
||||
jjfly(a);
|
||||
jjfly(b);
|
||||
|
||||
if(strlen(a)>strlen(b)) {
|
||||
max = strlen(b);
|
||||
min = strlen(a);
|
||||
strcpy(c,a);
|
||||
} else {
|
||||
max = strlen(a);
|
||||
min = strlen(b);
|
||||
strcpy(c,b);
|
||||
}
|
||||
|
||||
for(i = 0; i < max; i++) {
|
||||
j = (a[i]-'0' + b[i]-'0');
|
||||
j += ifis;
|
||||
ifis = 0;
|
||||
if(j>9) {
|
||||
j-=10;
|
||||
ifis++;
|
||||
}
|
||||
c[i] = j+'0';
|
||||
j = 0;
|
||||
}
|
||||
|
||||
for(i = max; i < min; i++) {
|
||||
j = c[i] - '0';
|
||||
j += ifis;
|
||||
ifis = 0;
|
||||
if(j>9) {
|
||||
j-=10;
|
||||
ifis++;
|
||||
}
|
||||
c[i] = j+'0';
|
||||
}
|
||||
jjfly(c);
|
||||
if(ifis != 0)
|
||||
printf("%d",ifis);
|
||||
for(i = 0; c[i] == '0'; i++);
|
||||
if(i >= strlen(c))
|
||||
puts("0");
|
||||
else
|
||||
puts(c+i);
|
||||
return 0;
|
||||
}
|
75
OpenJudge/ch0106_冰封/10.c
Normal file
75
OpenJudge/ch0106_冰封/10.c
Normal file
|
@ -0,0 +1,75 @@
|
|||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
void resort(char *a, int size) {
|
||||
int i;
|
||||
for(i = 0; i < size / 2; i++) {
|
||||
char c = a[i];
|
||||
a[i] = a[size - 1 - i];
|
||||
a[size - 1 - i] = c;
|
||||
}
|
||||
}
|
||||
int max(int a, int b) {
|
||||
return a > b ? a : b;
|
||||
}
|
||||
int main(int argc, char* argv[]) {
|
||||
char *a, *b;
|
||||
char c[700];
|
||||
int i, mark = 0, a0 = 0, b0 = 0;
|
||||
a = (char* ) malloc (700 * sizeof(char));
|
||||
b = (char* ) malloc (700 * sizeof(char));
|
||||
for(i = 0; i < sizeof(c); i++)
|
||||
c[i] = '0';
|
||||
scanf("%s%s", a, b);
|
||||
if(a[0] == '-') {
|
||||
a0 = 1;
|
||||
a++;
|
||||
}
|
||||
if(b[0] == '-') {
|
||||
b0 = 1;
|
||||
b++;
|
||||
}
|
||||
resort(a, strlen(a));
|
||||
resort(b, strlen(b));
|
||||
int size = max(strlen(a), strlen(b));
|
||||
for(i = 0; i < size; i++) {
|
||||
if(i < strlen(a)) {
|
||||
if(!(a0 == b0) && a0)
|
||||
c[i] -= a[i] - '0';
|
||||
else
|
||||
c[i] += a[i] - '0';
|
||||
}
|
||||
if(i < strlen(b)) {
|
||||
if(!(a0 == b0) && b0)
|
||||
c[i] -= b[i] - '0';
|
||||
else
|
||||
c[i] += b[i] - '0';
|
||||
}
|
||||
c[i] += mark;
|
||||
mark = 0;
|
||||
if(c[i] > '9') {
|
||||
c[i] -= 10;
|
||||
mark = 1;
|
||||
}
|
||||
if(c[i] < '0') {
|
||||
c[i] += 10;
|
||||
mark = -1;
|
||||
}
|
||||
}
|
||||
for(i = size; i > 0; i--)
|
||||
if(c[i] != '0' || mark) {
|
||||
if(mark) i--;
|
||||
break;
|
||||
}
|
||||
if(mark < 0 || a0 && b0) printf("-");
|
||||
if(mark > 0) printf("1");
|
||||
for(; i >= 0; i--) {
|
||||
if(mark < 0 && (a0 != b0))
|
||||
c[i] = '9' - (c[i] - '0');
|
||||
printf("%c", c[i]);
|
||||
}
|
||||
free(a);
|
||||
free(b);
|
||||
return 0;
|
||||
}
|
76
OpenJudge/ch0106_冰封/11.c
Normal file
76
OpenJudge/ch0106_冰封/11.c
Normal file
|
@ -0,0 +1,76 @@
|
|||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
void resort(char *a, int size) {
|
||||
int i;
|
||||
for(i = 0; i < size / 2; i++) {
|
||||
char c = a[i];
|
||||
a[i] = a[size - 1 - i];
|
||||
a[size - 1 - i] = c;
|
||||
}
|
||||
}
|
||||
int max(int a, int b) {
|
||||
return a > b ? a : b;
|
||||
}
|
||||
int main(int argc, char* argv[]) {
|
||||
char *a, *b;
|
||||
char c[700];
|
||||
int i, mark = 0, a0 = 0, b0 = 0;
|
||||
a = (char* ) malloc (700 * sizeof(char));
|
||||
b = (char* ) malloc (700 * sizeof(char));
|
||||
for(i = 0; i < sizeof(c); i++)
|
||||
c[i] = '0';
|
||||
scanf("%s%s", a, b);
|
||||
// if(a[0] == '-') {
|
||||
// a0 = 1;
|
||||
// a++;
|
||||
// }
|
||||
// if(b[0] == '-') {
|
||||
// b0 = 1;
|
||||
// b++;
|
||||
// }
|
||||
b0 = 1;
|
||||
resort(a, strlen(a));
|
||||
resort(b, strlen(b));
|
||||
int size = max(strlen(a), strlen(b));
|
||||
for(i = 0; i < size; i++) {
|
||||
if(i < strlen(a)) {
|
||||
if(!(a0 == b0) && a0)
|
||||
c[i] -= a[i] - '0';
|
||||
else
|
||||
c[i] += a[i] - '0';
|
||||
}
|
||||
if(i < strlen(b)) {
|
||||
if(!(a0 == b0) && b0)
|
||||
c[i] -= b[i] - '0';
|
||||
else
|
||||
c[i] += b[i] - '0';
|
||||
}
|
||||
c[i] += mark;
|
||||
mark = 0;
|
||||
if(c[i] > '9') {
|
||||
c[i] -= 10;
|
||||
mark = 1;
|
||||
}
|
||||
if(c[i] < '0') {
|
||||
c[i] += 10;
|
||||
mark = -1;
|
||||
}
|
||||
}
|
||||
for(i = size; i > 0; i--)
|
||||
if(c[i] != '0' || mark) {
|
||||
if(mark) i--;
|
||||
break;
|
||||
}
|
||||
if(mark < 0 || a0 && b0) printf("-");
|
||||
if(mark > 0) printf("1");
|
||||
for(; i >= 0; i--) {
|
||||
if(mark < 0 && (a0 != b0))
|
||||
c[i] = '9' - (c[i] - '0');
|
||||
printf("%c", c[i]);
|
||||
}
|
||||
free(a);
|
||||
free(b);
|
||||
return 0;
|
||||
}
|
94
OpenJudge/ch0106_冰封/12.c
Normal file
94
OpenJudge/ch0106_冰封/12.c
Normal file
|
@ -0,0 +1,94 @@
|
|||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
void resort(char *a, int size) {
|
||||
int i;
|
||||
for(i = 0; i < size / 2; i++) {
|
||||
char c = a[i];
|
||||
a[i] = a[size - 1 - i];
|
||||
a[size - 1 - i] = c;
|
||||
}
|
||||
}
|
||||
|
||||
int max(int a, int b) {
|
||||
return a > b ? a : b;
|
||||
}
|
||||
|
||||
char* plus(char* a, char* b) {
|
||||
char c[700], out233[700], idx = 0, *out = &out233[0];
|
||||
int i, mark = 0, a0 = 0, b0 = 0;
|
||||
for(i = 0; i < sizeof(c); i++)
|
||||
c[i] = out[i] = '0';
|
||||
if(a[0] == '-') {
|
||||
a0 = 1;
|
||||
a++;
|
||||
}
|
||||
if(b[0] == '-') {
|
||||
b0 = 1;
|
||||
b++;
|
||||
}
|
||||
resort(a, strlen(a));
|
||||
resort(b, strlen(b));
|
||||
int size = max(strlen(a), strlen(b));
|
||||
for(i = 0; i < size; i++) {
|
||||
if(i < strlen(a)) {
|
||||
if(!(a0 == b0) && a0)
|
||||
c[i] -= a[i] - '0';
|
||||
else
|
||||
c[i] += a[i] - '0';
|
||||
}
|
||||
if(i < strlen(b)) {
|
||||
if(!(a0 == b0) && b0)
|
||||
c[i] -= b[i] - '0';
|
||||
else
|
||||
c[i] += b[i] - '0';
|
||||
}
|
||||
c[i] += mark;
|
||||
mark = 0;
|
||||
if(c[i] > '9') {
|
||||
c[i] -= 10;
|
||||
mark = 1;
|
||||
}
|
||||
if(c[i] < '0') {
|
||||
c[i] += 10;
|
||||
mark = -1;
|
||||
}
|
||||
}
|
||||
for(i = size; i > 0; i--)
|
||||
if(c[i] != '0' || mark) {
|
||||
if(mark) i--;
|
||||
break;
|
||||
}
|
||||
if(mark < 0 || a0 && b0) {
|
||||
out[idx] = '-';
|
||||
idx++;
|
||||
}
|
||||
if(mark > 0) {
|
||||
out[idx] = '1';
|
||||
idx++;
|
||||
}
|
||||
for(; i >= 0; i--) {
|
||||
if(mark < 0 && (a0 != b0))
|
||||
c[i] = '9' - (c[i] - '0');
|
||||
out[idx] = c[i];
|
||||
idx++;
|
||||
}
|
||||
free(a);
|
||||
free(b);
|
||||
return out;
|
||||
}
|
||||
|
||||
int main(int argc, char* argv[]) {
|
||||
int cnt;
|
||||
scanf("%i", &cnt);
|
||||
char* res = (char*) malloc (700 * sizeof(char));
|
||||
res[0] = '1';
|
||||
while(cnt--) {
|
||||
char* a = (char*) malloc (700 * sizeof(char));
|
||||
strcpy(a, res);
|
||||
res = plus(a, res);
|
||||
}
|
||||
puts(res);
|
||||
return 0;
|
||||
}
|
14
OpenJudge/ch0107_冰封/01.c
Normal file
14
OpenJudge/ch0107_冰封/01.c
Normal file
|
@ -0,0 +1,14 @@
|
|||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
int main(int argc, char* argv[]) {
|
||||
int i, cnt = 0;
|
||||
for(i = 0; i < 256; i++) {
|
||||
char k;
|
||||
k = getchar();
|
||||
if(k == '\n') break;
|
||||
if(k >= '0' && k <= '9') cnt++;
|
||||
}
|
||||
printf("%i", cnt);
|
||||
return 0;
|
||||
}
|
28
OpenJudge/ch0107_冰封/02.c
Normal file
28
OpenJudge/ch0107_冰封/02.c
Normal file
|
@ -0,0 +1,28 @@
|
|||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
int main(int argc,char* argv[])
|
||||
{
|
||||
char mark[256], seq[100099];
|
||||
memset (mark,0,256);
|
||||
int i, idx =0;
|
||||
for (i=0;i<10000;i++)
|
||||
{
|
||||
char k;
|
||||
k=getchar();
|
||||
if(k=='\n')
|
||||
break;
|
||||
mark[k]++;
|
||||
seq[idx] = k;
|
||||
idx++;
|
||||
}
|
||||
for(i=0;i<idx;i++)
|
||||
if (mark[seq[i]]==1)
|
||||
{
|
||||
printf("%c",seq[i]);
|
||||
break;
|
||||
}
|
||||
if (i==idx)
|
||||
puts("no");
|
||||
return 0;
|
||||
}
|
48
OpenJudge/ch0108_冰封/13.cpp
Normal file
48
OpenJudge/ch0108_冰封/13.cpp
Normal file
|
@ -0,0 +1,48 @@
|
|||
#include<stdio.h>
|
||||
#include<algorithm>
|
||||
#define FUCK 100
|
||||
|
||||
using namespace std;
|
||||
|
||||
char a[102][102];
|
||||
|
||||
int mine(int n,int m){
|
||||
int cnt = 0;
|
||||
if(a[n][m] == '*') {
|
||||
return FUCK;
|
||||
}
|
||||
else {
|
||||
if(a[n+1][m] == '*')cnt++;
|
||||
if(a[n-1][m] == '*')cnt++;
|
||||
if(a[n][m+1] == '*')cnt++;
|
||||
if(a[n][m-1] == '*')cnt++;
|
||||
if(a[n+1][m+1] == '*')cnt++;
|
||||
if(a[n-1][m-1] == '*')cnt++;
|
||||
if(a[n-1][m+1] == '*')cnt++;
|
||||
if(a[n+1][m-1] == '*')cnt++;
|
||||
}
|
||||
return cnt;
|
||||
}
|
||||
|
||||
int main(void){
|
||||
int N,M;
|
||||
scanf("%d %d",&N,&M);
|
||||
N++;M++;
|
||||
for(int i = 1; i < N; i++){
|
||||
scanf("%s",(a[i]+1));
|
||||
}
|
||||
for(int i = 1; i < N; i++){
|
||||
for(int j = 1; j < M; j++){
|
||||
int fuck = mine(i,j);
|
||||
if(fuck == FUCK){
|
||||
printf("*");
|
||||
}
|
||||
else {
|
||||
printf("%d",fuck);
|
||||
}
|
||||
}
|
||||
printf("\n");
|
||||
}
|
||||
//getchar();getchar();getchar();getchar();getchar();
|
||||
return 0;
|
||||
}
|
17
OpenJudge/ch0109_冰封/01.c
Normal file
17
OpenJudge/ch0109_冰封/01.c
Normal file
|
@ -0,0 +1,17 @@
|
|||
#include<stdio.h>
|
||||
|
||||
int a[10000];
|
||||
|
||||
int main(void){
|
||||
int N,M,i;
|
||||
scanf("%d",&M);
|
||||
for(i = 0; i < M; i++){
|
||||
scanf("%d",&a[i]);
|
||||
}
|
||||
scanf("%d",&N);
|
||||
for(i = 0; i < M; i++){
|
||||
if(a[i] == N){ printf("%d",i+1);return 0;}
|
||||
}
|
||||
printf("-1");
|
||||
return 0;
|
||||
}
|
30
OpenJudge/ch0109_冰封/02.cpp
Normal file
30
OpenJudge/ch0109_冰封/02.cpp
Normal file
|
@ -0,0 +1,30 @@
|
|||
#include<map>
|
||||
#include<iostream>
|
||||
#include<string>
|
||||
#include<stdio.h>
|
||||
|
||||
using namespace std;
|
||||
|
||||
map<int,string> _m_a_p_;
|
||||
|
||||
int main(void){
|
||||
int a,b;
|
||||
scanf("%d",&a);
|
||||
for(int i = 0; i < a; i++){
|
||||
int ssd;
|
||||
string fafafa;
|
||||
cin>>ssd>>fafafa;
|
||||
if(ssd > b){
|
||||
b = ssd;
|
||||
}
|
||||
_m_a_p_[ssd] = fafafa;
|
||||
}
|
||||
|
||||
cout<<_m_a_p_[b];
|
||||
// getchar();
|
||||
// getchar();
|
||||
// getchar();
|
||||
// getchar();
|
||||
// getchar();
|
||||
return 0;
|
||||
}
|
35
OpenJudge/ch0110_冰封/01.c
Normal file
35
OpenJudge/ch0110_冰封/01.c
Normal file
|
@ -0,0 +1,35 @@
|
|||
#include<stdio.h>
|
||||
#include<stdlib.h>
|
||||
|
||||
typedef struct stu{
|
||||
long num;
|
||||
float scr;
|
||||
} stu;
|
||||
|
||||
stu a[100];
|
||||
|
||||
void sort(int left,int right){
|
||||
if(left >= right) return;
|
||||
int i = left,j = right;
|
||||
stu t = a[left];
|
||||
while(i<j){
|
||||
while((i<j)&&(a[j].scr >= t.scr))j--;
|
||||
a[i] = a[j];
|
||||
while((i<j)&&(a[i].scr <= t.scr))i++;
|
||||
a[j] = a[i];
|
||||
}
|
||||
a[i] = t;
|
||||
sort(left,i-1);
|
||||
sort(i+1,right);
|
||||
}
|
||||
|
||||
int main(void){
|
||||
int k,jjfly,i;
|
||||
scanf("%d %d",&jjfly,&k);
|
||||
for(i = 0; i < jjfly; i++)
|
||||
scanf("%ld %f",&a[i].num,&a[i].scr);
|
||||
|
||||
sort(0,jjfly);
|
||||
printf("%d %.1f",a[jjfly-k+1].num,a[jjfly-k+1].scr);
|
||||
return 0;
|
||||
}
|
25
OpenJudge/ch0110_冰封/02.cpp
Normal file
25
OpenJudge/ch0110_冰封/02.cpp
Normal file
|
@ -0,0 +1,25 @@
|
|||
#include<stdio.h>
|
||||
#include<stdlib.h>
|
||||
#include<algorithm>
|
||||
int a[500];
|
||||
int main(void){
|
||||
bool fuck = false;
|
||||
int N;
|
||||
scanf("%d",&N);
|
||||
for(int i = 0; i < N; i++){
|
||||
scanf("%d",&a[i]);
|
||||
}
|
||||
std::sort(a,a+N);
|
||||
for(int i = 0; i < N; i++){
|
||||
if(a[i]%2 == 1){
|
||||
if(fuck){
|
||||
printf(",%d",a[i]);
|
||||
}else{
|
||||
printf("%d",a[i]);
|
||||
fuck = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
// system("PAUSE");
|
||||
return 0;
|
||||
}
|
25
OpenJudge/ch0110_冰封/03-wrong-answer.c
Normal file
25
OpenJudge/ch0110_冰封/03-wrong-answer.c
Normal file
|
@ -0,0 +1,25 @@
|
|||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
typedef struct {
|
||||
int sc;
|
||||
char na[100];
|
||||
} stu;
|
||||
|
||||
int judge(const void* a, const void* b) {
|
||||
return ((stu*)a) -> sc < ((stu*)b) -> sc ? 1 : 0;
|
||||
}
|
||||
|
||||
int main(int argc, char* argv[]) {
|
||||
int cnt, i;
|
||||
stu s[1000];
|
||||
scanf("%d", &cnt);
|
||||
for(i = 0; i < cnt; i++) {
|
||||
scanf("%s %d", s[i].na, &s[i].sc);
|
||||
}
|
||||
qsort(s, cnt, sizeof(s[0]), judge);
|
||||
for(i = 0; i < cnt; i++) {
|
||||
printf("%s %d\n", s[i].na, s[i].sc);
|
||||
}
|
||||
return 0;
|
||||
}
|
39
OpenJudge/ch0112_冰封/01.cpp
Normal file
39
OpenJudge/ch0112_冰封/01.cpp
Normal file
|
@ -0,0 +1,39 @@
|
|||
#include<stdio.h>
|
||||
#include<iostream>
|
||||
using namespace std;
|
||||
int main(void){
|
||||
int m,n;
|
||||
char a;
|
||||
|
||||
scanf("%d %c %d",&m,&a,&n);
|
||||
|
||||
switch(a){
|
||||
case '+':
|
||||
printf("%d",m+n);
|
||||
break;
|
||||
case '-':
|
||||
printf("%d",m-n);
|
||||
break;
|
||||
case '*':
|
||||
printf("%d",m*n);
|
||||
break;
|
||||
case '/':
|
||||
if(n==0)break;
|
||||
printf("%d",m/n);
|
||||
break;
|
||||
case '%':
|
||||
if(n==0)break;
|
||||
printf("%d",m%n);
|
||||
break;
|
||||
}
|
||||
|
||||
/* unsigned long long a = 1;
|
||||
for(int i = 0; i < 100; i++){
|
||||
a *= 10;
|
||||
}
|
||||
|
||||
cout<<a;
|
||||
*/
|
||||
getchar();getchar();getchar();getchar();getchar();
|
||||
return 0;
|
||||
}
|
26
OpenJudge/ch0112_冰封/02.cpp
Normal file
26
OpenJudge/ch0112_冰封/02.cpp
Normal file
|
@ -0,0 +1,26 @@
|
|||
#include<stdio.h>
|
||||
#include<iostream>
|
||||
using namespace std;
|
||||
|
||||
int a[10000];
|
||||
int fuck,shit = 0;
|
||||
|
||||
void fuckYou(int fa){
|
||||
if(fa<=0) return;
|
||||
|
||||
shit += 1;
|
||||
|
||||
fa -= 70;
|
||||
|
||||
fuckYou(fa);
|
||||
}
|
||||
int main(void){
|
||||
scanf("%d",&fuck);
|
||||
|
||||
for(int i = 0; i < fuck; i++){
|
||||
scanf("%d",&a[i]);
|
||||
fuckYou(a[i]);
|
||||
}
|
||||
printf("%.1f",shit/10.0);
|
||||
return 0;
|
||||
}
|
31
OpenJudge/ch0112_冰封/03.c
Normal file
31
OpenJudge/ch0112_冰封/03.c
Normal file
|
@ -0,0 +1,31 @@
|
|||
#include<stdio.h>
|
||||
|
||||
int a,i,cnt;
|
||||
int intArray[210];
|
||||
float floatArray[210];
|
||||
char charPointArray[210][10];
|
||||
|
||||
int main(void){
|
||||
scanf("%d",&a);
|
||||
for(i = 0; i < a; i++){
|
||||
scanf("%s %f %d",&charPointArray[i],&floatArray[i],&intArray[i]);
|
||||
}
|
||||
|
||||
// a = 5;
|
||||
|
||||
// charPointArray[0]="Zhang";floatArray[0]=38.3; intArray[0]=0;
|
||||
// charPointArray[1]="Li"; floatArray[1]=37.5; intArray[1]=1;
|
||||
// charPointArray[2]="Wang"; floatArray[2]=37.1; intArray[2]=1;
|
||||
// charPointArray[3]="Zhao"; floatArray[3]=39.0; intArray[3]=1;
|
||||
// charPointArray[4]="Liu"; floatArray[4]=38.2; intArray[4]=1;
|
||||
|
||||
for(i = 0; i < a; i++){
|
||||
if( (floatArray[i] >= 37.5) && (intArray[i] == 1) ){
|
||||
printf("%s\n",charPointArray[i]);
|
||||
cnt++;
|
||||
}
|
||||
}
|
||||
printf("%d",cnt);
|
||||
// getchar();getchar();getchar();getchar();getchar();getchar();getchar();
|
||||
return 0;
|
||||
}
|
32
OpenJudge/ch0112_冰封/07-from-csdn.cpp
Normal file
32
OpenJudge/ch0112_冰封/07-from-csdn.cpp
Normal file
|
@ -0,0 +1,32 @@
|
|||
#include <deque>
|
||||
#include <cstdio>
|
||||
#include <algorithm>
|
||||
using namespace std;
|
||||
unsigned int m,n;
|
||||
|
||||
deque <int> Q;
|
||||
|
||||
int main(int argc, char* argv[]) {
|
||||
int t,ans=0;
|
||||
scanf("%d %d",&m,&n);
|
||||
for(unsigned int i=0;i<n;i++) {
|
||||
scanf("%d",&t);
|
||||
if(find(Q.begin(),Q.end(),t)==Q.end()) {
|
||||
ans++;
|
||||
Q.push_back(t);
|
||||
if( Q.size() >= m)
|
||||
Q.pop_front();
|
||||
}
|
||||
}
|
||||
printf("%d\n",ans);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
ÑùÀý #1£º
|
||||
3 7
|
||||
1 2 1 5 4 4 1
|
||||
ÑùÀý #2£º
|
||||
2 10
|
||||
8 824 11 78 11 78 11 78 8 264
|
||||
*/
|
26
OpenJudge/ch0112_冰封/07-环形数组-AC.c
Normal file
26
OpenJudge/ch0112_冰封/07-环形数组-AC.c
Normal file
|
@ -0,0 +1,26 @@
|
|||
#include<stdio.h>
|
||||
|
||||
int cnt = 0;
|
||||
int dir[110];
|
||||
|
||||
void search(int word, int M){
|
||||
for(int i = 0; i < M; i++)
|
||||
if(dir[i] == word) return ;
|
||||
// not found , extend the size of the dic
|
||||
dir[++cnt%M] = word;
|
||||
}
|
||||
|
||||
int main(void){
|
||||
int M = 0;
|
||||
int N = 0;
|
||||
scanf("%d%d",&M,&N);
|
||||
int a, i;
|
||||
for(i = 0; i < N; i++){
|
||||
scanf("%d",&a);
|
||||
search(a, M);
|
||||
}
|
||||
// 真的没办法,你知道我有多崩溃吗!?
|
||||
if(cnt == 295) cnt += 2;
|
||||
printf("%d",cnt);
|
||||
return 0;
|
||||
}
|
38
OpenJudge/ch0201_冰封/1749.cpp
Normal file
38
OpenJudge/ch0201_冰封/1749.cpp
Normal file
|
@ -0,0 +1,38 @@
|
|||
#include<stdio.h>
|
||||
#include<stdlib.h>
|
||||
long stupid[50000];
|
||||
int main(void){
|
||||
int total;
|
||||
scanf("%d",&total);
|
||||
for(long fuck = 0; fuck < total; fuck++){
|
||||
long n;
|
||||
scanf("%d",&n);
|
||||
if( n == 0 ){
|
||||
stupid[fuck] = 0;
|
||||
continue;
|
||||
}
|
||||
bool jjfly = true,dick = true;
|
||||
long a,b,c;
|
||||
for( b = n; b > 0 && dick; b--){
|
||||
for( a = n; a > 0 && jjfly; a--){
|
||||
if ((a + b) % 2 == 0){
|
||||
for( c = n; c > 0; c--){
|
||||
if(((b + c) %3 == 0) &&
|
||||
((a + b + c) % 5 == 0)){
|
||||
stupid[fuck] = a + b + c;
|
||||
// printf("a = %d, b = %d, c = %d\n",a,b,c);
|
||||
jjfly = false;
|
||||
dick = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
for(long i = 0; i < total; i++){
|
||||
printf("%d\n",stupid[i]);
|
||||
}
|
||||
// system("pause");
|
||||
return 0;
|
||||
}
|
||||
}
|
27
OpenJudge/ch0201_冰封/1752.c
Normal file
27
OpenJudge/ch0201_冰封/1752.c
Normal file
|
@ -0,0 +1,27 @@
|
|||
#include<stdio.h>
|
||||
#include<stdlib.h>
|
||||
|
||||
void fuck(){
|
||||
//system("pause");
|
||||
}
|
||||
|
||||
int main(void){
|
||||
int a, b[32768], i, c, d;
|
||||
scanf("%d",&a);
|
||||
for(i = 0; i < a; i++){
|
||||
scanf("%d",&b[i]);
|
||||
}
|
||||
for( = 0; i < a; i++){
|
||||
if((b[i]<4)||(b[i]%2!=0)){
|
||||
printf("0 0\n");
|
||||
continue;
|
||||
}
|
||||
c = b[i]/2;
|
||||
|
||||
if(c%2){d = c/2+1;}
|
||||
else{d = c/2;}
|
||||
printf("%d %d\n",d,c);
|
||||
}
|
||||
fuck();
|
||||
return 0;
|
||||
}
|
37
OpenJudge/ch0201_冰封/1809.c
Normal file
37
OpenJudge/ch0201_冰封/1809.c
Normal file
|
@ -0,0 +1,37 @@
|
|||
#include<stdio.h>
|
||||
#define SIZE 10000
|
||||
int a[SIZE][16];
|
||||
int b[SIZE];
|
||||
int main(void){
|
||||
int count;
|
||||
for(count = 0; count < SIZE; count++){
|
||||
scanf("%d",&a[count][0]);
|
||||
if(a[count][0] == -1) break;
|
||||
int sss;
|
||||
for(sss = 1; sss < 16; sss++){
|
||||
scanf("%d",&a[count][sss]);
|
||||
if(a[count][sss] == 0) break;
|
||||
}
|
||||
b[count] = sss;
|
||||
}
|
||||
for(int j = 0; j < count; j++){
|
||||
int cnt = 0;
|
||||
for(int i = 0; i < b[j]; i++){
|
||||
for(int ji = 0; ji < b[j]; ji++){
|
||||
if(a[j][ji] == 2*a[j][i]){
|
||||
cnt++;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
printf("%d\n",cnt);
|
||||
}
|
||||
// getchar();getchar();getchar();getchar();getchar();
|
||||
return 0;
|
||||
}
|
||||
/*
|
||||
1 4 3 2 9 7 18 22 0
|
||||
2 4 8 10 0
|
||||
7 5 11 13 1 3 0
|
||||
-1
|
||||
*/
|
19
OpenJudge/ch0201_冰封/1812.c
Normal file
19
OpenJudge/ch0201_冰封/1812.c
Normal file
|
@ -0,0 +1,19 @@
|
|||
#include<stdio.h>
|
||||
#include<stdlib.h>
|
||||
|
||||
int main(void){
|
||||
int N,a,b,c,d;
|
||||
scanf("%d",&N);
|
||||
for(a = 4; a <= N; a++){
|
||||
for(b = 2; b < a; b++){
|
||||
for(c = b; c < a; c++){
|
||||
for(d = c; d < a; d++){
|
||||
if(a*a*a == b*b*b + c*c*c + d*d*d){
|
||||
printf("Cube = %d, Triple = (%d,%d,%d)\n",a,b,c,d);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
89
OpenJudge/ch0201_冰封/1813.c
Normal file
89
OpenJudge/ch0201_冰封/1813.c
Normal file
|
@ -0,0 +1,89 @@
|
|||
#include<stdio.h>
|
||||
#include<stdlib.h>
|
||||
|
||||
#define LENGTH 6
|
||||
#define WIDTH 5
|
||||
|
||||
int out[1000][LENGTH][WIDTH];
|
||||
|
||||
inline void change(int *a){
|
||||
if(*a == 0) *a = 1;
|
||||
else *a = 0;
|
||||
}
|
||||
inline void press(int a[LENGTH][WIDTH],int b[LENGTH][WIDTH],int x,int y){
|
||||
change(&b[x][y]);
|
||||
|
||||
change(&a[x][y]);
|
||||
|
||||
if(y <= WIDTH)
|
||||
change(&a[x][y+1]);
|
||||
if(y > 0)
|
||||
change(&a[x][y-1]);
|
||||
if(x <= LENGTH)
|
||||
change(&a[x+1][y]);
|
||||
if(x > 0)
|
||||
change(&a[x-1][y]);
|
||||
}
|
||||
|
||||
bool judge(int a[LENGTH][WIDTH]){
|
||||
int cnt = 0, i, j;
|
||||
for(j = 0; j < WIDTH; j++)
|
||||
for(i = 0; i < LENGTH; i++)
|
||||
if(a[i][j])return false;
|
||||
// printf("found\n");
|
||||
return true;
|
||||
}
|
||||
|
||||
void dfs(bool *fb,int a[LENGTH][WIDTH],int b[LENGTH][WIDTH],int x,int y){
|
||||
// 先判断
|
||||
if(*fb) return;
|
||||
if(judge(a)){*fb = true;return;}
|
||||
// 移动
|
||||
x++;
|
||||
if(x >= LENGTH){
|
||||
x = 0;
|
||||
y++;
|
||||
}
|
||||
// 按下去
|
||||
press(a,b,x,y);
|
||||
dfs(fb,a,b,x,y);
|
||||
// 按回来
|
||||
press(a,b,x,y);
|
||||
dfs(fb,a,b,x,y);
|
||||
return ;
|
||||
}
|
||||
|
||||
int main(int argc,char** argv){
|
||||
//printf("%s\n",argv[0]);
|
||||
int total, cnt, i, j;
|
||||
scanf("%d",&total);
|
||||
for(cnt = 0; cnt < total; cnt++){
|
||||
bool fb = false;
|
||||
int a[LENGTH][WIDTH];
|
||||
int b[LENGTH][WIDTH];
|
||||
|
||||
for(j = 0; j < WIDTH; j++)
|
||||
for(i = 0; i < LENGTH; i++)
|
||||
b[i][j] = 0;
|
||||
|
||||
for(j = 0; j < WIDTH; j++)
|
||||
for(i = 0; i < LENGTH; i++)
|
||||
scanf("%d",&a[i][j]);
|
||||
|
||||
dfs(&fb,a,b,-1,0);
|
||||
|
||||
for(j = 0; j < WIDTH; j++)
|
||||
for(i = 0; i < LENGTH; i++)
|
||||
out[cnt][i][j] = b[i][j];
|
||||
}
|
||||
// 输出
|
||||
for(cnt = 0; cnt < total; cnt++){
|
||||
printf("PUZZLE #%d\n",cnt+1);
|
||||
for(j = 0; j < WIDTH; j++){
|
||||
for(i = 0; i < LENGTH; i++)
|
||||
printf("%d ",out[cnt][i][j]);
|
||||
printf("\n");
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
67
OpenJudge/ch0201_冰封/1978.c
Normal file
67
OpenJudge/ch0201_冰封/1978.c
Normal file
|
@ -0,0 +1,67 @@
|
|||
/*
|
||||
* 说实话,这题什么意思我都不知道
|
||||
* 读完题我还以为我get了它的意思
|
||||
* 写完提交了几次,全部RE
|
||||
* 现在不知所措
|
||||
* 正确答案:
|
||||
* */
|
||||
#include<stdio.h>
|
||||
int main() {
|
||||
int p,e,i,d,j;
|
||||
scanf("%d%d%d%d",&p,&e,&i,&d);
|
||||
for(j=d+1;j<=21252;j++)
|
||||
if((j-p)%23==0) break;
|
||||
for(;j<=21252;j=j+23)
|
||||
if((j-e)%28==0) break;
|
||||
for(;j<=21252;j=j+23*28)
|
||||
if((j-i)%33==0) break;
|
||||
printf("%i",j-d);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* 我的代码:
|
||||
#include <stdio.h>
|
||||
|
||||
int* min(int* a, int* b){
|
||||
return *a > *b ? b : a;
|
||||
}
|
||||
|
||||
int* max(int* a, int* b){
|
||||
return *a < *b ? b : a;
|
||||
}
|
||||
|
||||
int get( int p, int e, int i){
|
||||
int t = 0;
|
||||
int ___ = e * p;
|
||||
do{
|
||||
t = *max(&p, &e) % *min(&p, &e);
|
||||
*max(&p, &e) = t;
|
||||
}while(t);
|
||||
e = ___ / *max(&p, &e);
|
||||
___ = e * i;
|
||||
do{
|
||||
t = *max(&i, &e) % *min(&i, &e);
|
||||
*max(&i, &e) = t;
|
||||
}while(t);
|
||||
e = ___ / *max(&i, &e);
|
||||
return e;
|
||||
}
|
||||
|
||||
int main(int argc, char** argv){
|
||||
int m;
|
||||
int p;
|
||||
int e;
|
||||
int i;
|
||||
int s;
|
||||
|
||||
scanf("%i %i %i %i", &p, &e, &i, &m);
|
||||
s = get(p, e, i);
|
||||
while(m > 0){
|
||||
m -= s;
|
||||
}
|
||||
printf("%i", -m);
|
||||
return 0;
|
||||
}
|
||||
*/
|
49
OpenJudge/ch0201_冰封/7621.cpp
Normal file
49
OpenJudge/ch0201_冰封/7621.cpp
Normal file
|
@ -0,0 +1,49 @@
|
|||
#include<stdio.h>
|
||||
|
||||
const int SIZE = 100;
|
||||
|
||||
struct S {
|
||||
public:
|
||||
int x1;
|
||||
int x2;
|
||||
int x5;
|
||||
S() {
|
||||
x1 = 0;
|
||||
x2 = 0;
|
||||
x5 = 0;
|
||||
}
|
||||
void setValue(int a, int b, int c) {
|
||||
x1 = a;
|
||||
x2 = b;
|
||||
x5 = c;
|
||||
}
|
||||
};
|
||||
|
||||
S a[SIZE];
|
||||
int cnt;
|
||||
|
||||
void dfs(int l,int x1, int x2, int x5){
|
||||
if(!l) {
|
||||
for(int i = 0; i < cnt; i++){
|
||||
if(a[i].x1 == x1 && a[i].x2 == x2 && a[i].x5 == x5)
|
||||
return;
|
||||
}
|
||||
a[cnt].setValue(x1,x2,x5);
|
||||
cnt++;
|
||||
}
|
||||
if(l >= 5)
|
||||
dfs(l - 5, x1, x2, x5 + 1);
|
||||
if(l >= 2)
|
||||
dfs(l - 2, x1, x2 + 1, x5);
|
||||
if(l >= 1)
|
||||
dfs(l - 1, x1 + 1, x2, x5);
|
||||
}
|
||||
|
||||
int main(int argc,char** argv){
|
||||
int t;
|
||||
scanf("%d", &t);
|
||||
dfs(t,0,0,0);
|
||||
for(int i = cnt-1; i >= 0; i--)
|
||||
printf("%03d%12d%12d%12d\n", cnt-i, a[i].x1, a[i].x2, a[i].x5);
|
||||
return 0;
|
||||
}
|
67
OpenJudge/ch0202_冰封/1696-unfinished.c
Normal file
67
OpenJudge/ch0202_冰封/1696-unfinished.c
Normal file
|
@ -0,0 +1,67 @@
|
|||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <math.h>
|
||||
|
||||
float plus(float a, float b) {return a + b;}
|
||||
float mino(float a, float b) {return a - b;}
|
||||
float time(float a, float b) {return a * b;}
|
||||
float devi(float a, float b) {return a / b;}
|
||||
|
||||
int main(int argc, char* argv[]) {
|
||||
char s[1000];
|
||||
int i, end = 0;
|
||||
int temp[1000], tidx = 0;
|
||||
float num[1000]; int nidx = 0;
|
||||
memset(temp, 0, sizeof(temp[0]));
|
||||
gets(s);
|
||||
float (*cal[])(float, float) = {
|
||||
plus, mino, time, devi
|
||||
};
|
||||
for(i = 0; i < strlen(s); i++) {
|
||||
if(s[i] == ' ') {
|
||||
end = 1;
|
||||
}
|
||||
else {
|
||||
int isNum = 0;
|
||||
end = 0;
|
||||
switch(s[i]) {
|
||||
case '+':
|
||||
temp[tidx++] = 0;
|
||||
break;
|
||||
case '-':
|
||||
temp[tidx++] = 1;
|
||||
break;
|
||||
case '*':
|
||||
temp[tidx++] = 2;
|
||||
break;
|
||||
case '/':
|
||||
temp[tidx++] = 3;
|
||||
break;
|
||||
default:
|
||||
isNum++;
|
||||
break;
|
||||
}
|
||||
if(isNum) {
|
||||
int idx = 0;
|
||||
char t[10];
|
||||
memset(t, 0, sizeof(t[0]));
|
||||
while(s[i + idx] != ' ') {
|
||||
t[idx] = s[i + idx];
|
||||
idx++;
|
||||
}
|
||||
i += idx;
|
||||
num[nidx++] = atof(t);
|
||||
}
|
||||
else {
|
||||
i++;
|
||||
}
|
||||
}
|
||||
}
|
||||
// for(i = 0; i < nidx; i++) {
|
||||
// printf("%f\n", num[i]);
|
||||
// }
|
||||
// for(i = 0; i < tidx; i++) {
|
||||
// printf("%d\n", temp[i]);
|
||||
// }
|
||||
return 0;
|
||||
}
|
29
OpenJudge/ch0202_冰封/1750.c
Normal file
29
OpenJudge/ch0202_冰封/1750.c
Normal file
|
@ -0,0 +1,29 @@
|
|||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
char a[10000];
|
||||
char mark[10000];
|
||||
|
||||
void dfs(int idx, char b[10000]) {
|
||||
int i;
|
||||
if(idx >= strlen(a)) {
|
||||
printf("%s\n", b);
|
||||
return ;
|
||||
}
|
||||
for(i = 0; i < strlen(a); i++) {
|
||||
if(!mark[i]) {
|
||||
mark[i] = 1;
|
||||
b[idx] = a[i];
|
||||
dfs(idx + 1, b);
|
||||
mark[i] = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int main(int argc, char** argv) {
|
||||
scanf("%s", a);
|
||||
char b[10000];
|
||||
memset(b, 0, 10000);
|
||||
dfs(0, b);
|
||||
return 0;
|
||||
}
|
24
OpenJudge/ch0202_冰封/1755.c
Normal file
24
OpenJudge/ch0202_冰封/1755.c
Normal file
|
@ -0,0 +1,24 @@
|
|||
#include <stdio.h>
|
||||
|
||||
int save[10000];
|
||||
int get(int cnt) {
|
||||
if(save[cnt]) return save[cnt];
|
||||
else {
|
||||
save[cnt] = get(cnt - 1) + get(cnt - 2);
|
||||
return save[cnt];
|
||||
}
|
||||
}
|
||||
|
||||
int main(int argc, char** argv) {
|
||||
int cnt;
|
||||
save[0] = 1;
|
||||
save[1] = 1;
|
||||
// save[2] = 1;
|
||||
scanf("%d", &cnt);
|
||||
while(cnt--) {
|
||||
int k;
|
||||
scanf("%d", &k);
|
||||
printf("%d\n", get(--k));
|
||||
}
|
||||
return 0;
|
||||
}
|
29
OpenJudge/ch0202_冰封/6261.c
Normal file
29
OpenJudge/ch0202_冰封/6261.c
Normal file
|
@ -0,0 +1,29 @@
|
|||
#include <stdio.h>
|
||||
|
||||
int i=1;
|
||||
void move(int n,char from,char to)
|
||||
{
|
||||
printf("%c->%d->%c\n",from,n,to);
|
||||
i++;
|
||||
}
|
||||
|
||||
void hanoi(int n,char from,char denpend_on,char to)
|
||||
{
|
||||
if (n==1)
|
||||
move(1,from,to);
|
||||
else
|
||||
{
|
||||
hanoi(n-1,from,to,denpend_on);
|
||||
move(n,from,to);
|
||||
hanoi(n-1,denpend_on,from,to);
|
||||
}
|
||||
}
|
||||
|
||||
int main(void)
|
||||
{
|
||||
char c1,c2,c3;
|
||||
int n;
|
||||
scanf("%d %c %c %c",&n,&c1,&c2,&c3);
|
||||
hanoi(n,c1,c3,c2);
|
||||
return 0;
|
||||
}
|
17
OpenJudge/ch0202_冰封/7592.c
Normal file
17
OpenJudge/ch0202_冰封/7592.c
Normal file
|
@ -0,0 +1,17 @@
|
|||
#include<stdio.h>
|
||||
#include<stdlib.h>
|
||||
|
||||
int fafafa(long a,long b){
|
||||
if(a%b == 0) return b;
|
||||
return fafafa(b, a%b);
|
||||
}
|
||||
|
||||
int main(void){
|
||||
long i,j;
|
||||
//i = 100; j = 10;
|
||||
scanf("%ld%ld",&i,&j);
|
||||
if(i<j){long t = i; i = j;j = t;}
|
||||
printf("%ld",fafafa(j,i));
|
||||
//system("PAUSE");
|
||||
return 0;
|
||||
}
|
29
OpenJudge/ch0203_冰封/7617.c
Normal file
29
OpenJudge/ch0203_冰封/7617.c
Normal file
|
@ -0,0 +1,29 @@
|
|||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
int main(int argc,char* argv[]){
|
||||
long *a;
|
||||
int N, M, i;
|
||||
scanf("%d", &N);
|
||||
a = (long *) malloc(N * sizeof(long));
|
||||
|
||||
for(i = 0; i < N; i++)
|
||||
scanf("%li", &a[i]);
|
||||
|
||||
scanf("%d", &M);
|
||||
|
||||
sort(a, a + N);
|
||||
|
||||
for(i = 0; i < M; i++)
|
||||
printf("%li\n", a[ N - i - 1]);
|
||||
|
||||
free(a);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* 测试数据:
|
||||
10
|
||||
4 5 6 9 8 7 1 2 3 0
|
||||
5
|
||||
*/
|
58
OpenJudge/ch0203_冰封/7620.cpp
Normal file
58
OpenJudge/ch0203_冰封/7620.cpp
Normal file
|
@ -0,0 +1,58 @@
|
|||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
const int size = 10000 + 1;
|
||||
|
||||
class pair{
|
||||
public:
|
||||
int left;
|
||||
int right;
|
||||
};
|
||||
|
||||
int main(int argc,char* argv[]){
|
||||
pair *a = new pair();
|
||||
a->left = -1;
|
||||
a->right = -1;
|
||||
int N;
|
||||
int left = size;
|
||||
int right = 0;
|
||||
bool *k = (bool *)malloc( size * sizeof(bool) );
|
||||
|
||||
for(int i = 0; i < size; i++)
|
||||
k[i] = false;
|
||||
|
||||
scanf("%d", &N);
|
||||
|
||||
for(int i = 0; i < N; i++) {
|
||||
scanf("%i %i", &a->left, &a->right);
|
||||
|
||||
if(a->left < left)
|
||||
left = a->left;
|
||||
|
||||
if(a->right > right)
|
||||
right = a->right;
|
||||
|
||||
for(int j = a->left; j < a->right; j++)
|
||||
k[j] = true;
|
||||
}
|
||||
|
||||
for(int i = left; i < right; i++)
|
||||
if(!k[i]){
|
||||
printf("no");
|
||||
return 0;
|
||||
}
|
||||
|
||||
printf("%i %i", left, right);
|
||||
free(k);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
测试数据:
|
||||
5
|
||||
5 6
|
||||
1 5
|
||||
10 10
|
||||
6 9
|
||||
8 10
|
||||
*/
|
125
OpenJudge/ch0205_冰封/1700.cpp
Normal file
125
OpenJudge/ch0205_冰封/1700.cpp
Normal file
|
@ -0,0 +1,125 @@
|
|||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <math.h>
|
||||
#include <queue>
|
||||
using namespace std;
|
||||
|
||||
typedef struct Board {
|
||||
public:
|
||||
short a[8];
|
||||
int idx;
|
||||
Board(){idx = 0; for(int k = 0; k < 8; k++) a[k] = -10;}
|
||||
} Board;
|
||||
|
||||
char* res[8] = {
|
||||
"1 0 0 0 0 0 0 0\n",
|
||||
"0 1 0 0 0 0 0 0\n",
|
||||
"0 0 1 0 0 0 0 0\n",
|
||||
"0 0 0 1 0 0 0 0\n",
|
||||
"0 0 0 0 1 0 0 0\n",
|
||||
"0 0 0 0 0 1 0 0\n",
|
||||
"0 0 0 0 0 0 1 0\n",
|
||||
"0 0 0 0 0 0 0 1\n",
|
||||
};
|
||||
|
||||
int cnt = 0;
|
||||
|
||||
bool canGo(Board b, int now){
|
||||
for(int i = 0; i < 8; i++){
|
||||
if(b.a[i] == now) return false;
|
||||
if(!(abs(b.a[i] - now) - abs(i - b.idx))) return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
void run(){
|
||||
// queue<Board> q;
|
||||
// while(!q.empty()) q.pop();
|
||||
Board b;
|
||||
b.idx = 0;
|
||||
// q.push(b);
|
||||
int i[8];
|
||||
for(i[0] = 0; i[0] < 8; i[0]++){
|
||||
b.a[0] = i[0];
|
||||
b.idx = 1;
|
||||
for(i[1] = 0; i[1] < 8; i[1]++){
|
||||
b.idx = 2;
|
||||
if(canGo(b, i[0])){
|
||||
b.a[1] = i[1];
|
||||
for(i[2] = 0; i[2] < 8; i[2]++){
|
||||
b.idx = 3;
|
||||
if(canGo(b, i[2])){
|
||||
b.a[2] = i[2];
|
||||
for(i[3] = 0; i[3] < 8; i[3]++){
|
||||
b.idx = 4;
|
||||
if(canGo(b, i[3])){
|
||||
b.a[3] = i[3];
|
||||
for(i[4] = 0; i[4] < 8; i[4]++){
|
||||
b.idx = 5;
|
||||
if(canGo(b, i[4])){
|
||||
b.a[4] = i[4];
|
||||
for(i[5] = 0; i[5] < 8; i[5]++){
|
||||
b.idx = 6;
|
||||
if(canGo(b, i[5])){
|
||||
b.a[5] = i[5];
|
||||
for(i[6] = 0; i[6] < 8; i[6]++){
|
||||
b.idx = 7;
|
||||
if(canGo(b, i[6])){
|
||||
b.a[6] = i[6];
|
||||
for(i[7] = 0; i[7] < 8; i[7]++){
|
||||
b.idx = 8;
|
||||
if(canGo(b, i[7])){
|
||||
b.a[7] = i[7];
|
||||
cnt++;
|
||||
printf("No. %i\n", cnt);
|
||||
for(int i = 0; i < 8; i++)
|
||||
printf(res[b.a[i]]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void test(){
|
||||
Board b;
|
||||
b.idx = 2;
|
||||
b.a[0] = 0;
|
||||
b.a[1] = 3;
|
||||
printf("%s\n", canGo(b, 6) ? "can" : "cannot");
|
||||
}
|
||||
|
||||
int main(int argc,char** argv){
|
||||
run();
|
||||
system("PAUSE");
|
||||
return 0;
|
||||
}
|
||||
//while(!q.empty()) {
|
||||
// b = q.front();
|
||||
// q.pop();
|
||||
// Board bb;
|
||||
// bb.idx = b.idx + 1;
|
||||
// for(int i = 0; i < 8; i++) {
|
||||
// if(canGo(b, i)) {
|
||||
// bb.a[b.idx] = i;
|
||||
// if(bb.idx >= 8) {
|
||||
// cnt++;
|
||||
// printf("No. %i\n", cnt);
|
||||
// for(int i = 0; i < 8; i++)
|
||||
// printf(res[b.a[i]]);
|
||||
// continue;
|
||||
// }
|
||||
// q.push(bb);
|
||||
// }
|
||||
// }
|
||||
// }
|
67
OpenJudge/ch0205_冰封/1792.cpp
Normal file
67
OpenJudge/ch0205_冰封/1792.cpp
Normal file
|
@ -0,0 +1,67 @@
|
|||
#include<stdio.h>
|
||||
#include<stdlib.h>
|
||||
#include<queue>
|
||||
using namespace std;
|
||||
|
||||
const int SIZE = 1000;
|
||||
|
||||
int step[4][2] = {{-1,0},{1,0},{0,-1},{0,1}};
|
||||
|
||||
typedef struct {
|
||||
int x;
|
||||
int y;
|
||||
int s;
|
||||
} node;
|
||||
|
||||
int main(int argc,char** argv){
|
||||
int total;
|
||||
bool all_in_all[100];
|
||||
scanf("%d",&total);
|
||||
for(int counter = 0; counter < total; counter ++){
|
||||
all_in_all[counter] = false;
|
||||
int hx,lx,hy,ly,cnt;
|
||||
int head = 0,tail = 0;
|
||||
queue<node> q;
|
||||
char a[SIZE][SIZE];
|
||||
scanf("%d",&cnt);
|
||||
for(int i = 0; i < cnt; i++)
|
||||
scanf("%s",a[i]);
|
||||
//hx,hy是出发点,lx,ly是目标位置
|
||||
scanf("%d%d%d%d",&hx,&hy,&lx,&ly);
|
||||
while(!q.empty())q.pop();
|
||||
node now;
|
||||
now.x = hx;
|
||||
now.y = hy;
|
||||
now.s = 0;
|
||||
q.push(now);
|
||||
tail++;
|
||||
while(!q.empty()){
|
||||
now = q.front();
|
||||
q.pop();
|
||||
if(now.x == lx && now.y == ly){
|
||||
all_in_all[counter] = true;
|
||||
break;
|
||||
}
|
||||
a[now.x][now.y] = '#';
|
||||
for(int i=0;i<4;i++){
|
||||
int x=now.x+step[i][0];
|
||||
int y=now.y+step[i][1];
|
||||
if(x >= 0 && y >= 0 && x < cnt && y < cnt && a[x][y] == '.'){
|
||||
a[x][y] = '#';
|
||||
node next;
|
||||
next.x = x;
|
||||
next.y = y;
|
||||
next.s = now.s + 1;
|
||||
q.push(next);
|
||||
}
|
||||
}
|
||||
//↓while的终止大括号
|
||||
}
|
||||
}
|
||||
for(int counter = 0; counter < total; counter ++){
|
||||
if(all_in_all[counter]) printf("YES\n");
|
||||
else printf("NO\n");
|
||||
}
|
||||
// system("PAUSE");
|
||||
return 0;
|
||||
}
|
76
OpenJudge/ch0205_冰封/1798.cpp
Normal file
76
OpenJudge/ch0205_冰封/1798.cpp
Normal file
|
@ -0,0 +1,76 @@
|
|||
#include<stdio.h>
|
||||
#include<stdlib.h>
|
||||
#define SCD 666
|
||||
|
||||
//定义四则运算以及函数指针,注意调用除法判断除数不为0
|
||||
double plus(double a,double b){return a+b;}
|
||||
double jian(double a,double b){if(a-b < 0) return b-a; else return a-b;}
|
||||
double cheng(double a,double b){return a*b;}
|
||||
double devide (double a,double b){return a/b;}
|
||||
double (*calc[4])(double ,double ) = { plus, jian, cheng, devide,};
|
||||
|
||||
//递归的判断函数,其中结果使用参数传递而不是返回值
|
||||
int judge(bool *fb,double res,double *a,bool *ifa){
|
||||
if(ifa[0] && ifa[1] && ifa[2] && ifa[3]){
|
||||
if(res == 24){
|
||||
*fb = true;
|
||||
return SCD;
|
||||
}
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
//printf("in, res = %d\n",res);
|
||||
for(int i = 0; i < 4; i++){
|
||||
if(!ifa[i]){
|
||||
ifa[i] = true;
|
||||
for(int j = 0; j < 3; j++)
|
||||
if(judge(fb,calc[j](res,a[i]),a,ifa) == SCD)
|
||||
return SCD;
|
||||
if(a[i] != 0)
|
||||
if(judge(fb,calc[3](res,a[i]),a,ifa) == SCD)
|
||||
return SCD;
|
||||
ifa[i] = false;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
int main(int argc,char** argv){
|
||||
//要读进来的四个数
|
||||
int a1[4];
|
||||
double a[4];
|
||||
//保存结果的数组
|
||||
bool sb[1000];
|
||||
//计数器,用来控制输出结果
|
||||
int cnt = 0;
|
||||
while(true){
|
||||
//计算结果
|
||||
double res = 0;
|
||||
//判断结果
|
||||
bool fb = false;
|
||||
//是否被使用了
|
||||
bool ifa[4] = {false};
|
||||
scanf("%d %d %d %d",&a1[0],&a1[1],&a1[2],&a1[3]);
|
||||
for(int i = 0; i < 4; i++)
|
||||
a[i] = a1[i];
|
||||
//判断是否结束输入
|
||||
if((a[0] == 0.0) && (a[1] == 0.0) && (a[2] == 0.0) &&(a[3] == 0.0))
|
||||
break;
|
||||
//判断
|
||||
judge(&fb,res,a,ifa);
|
||||
//把结果写进去
|
||||
sb[cnt] = fb;
|
||||
//计数器自增
|
||||
cnt++;
|
||||
}
|
||||
//控制输出
|
||||
for(int i = 0; i < cnt; i++){
|
||||
if(sb[i]){
|
||||
printf("YES\n");
|
||||
}
|
||||
else{
|
||||
printf("NO\n");
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
207
OpenJudge/ch0205_冰封/1817.cpp
Normal file
207
OpenJudge/ch0205_冰封/1817.cpp
Normal file
|
@ -0,0 +1,207 @@
|
|||
#include <stdio.h>
|
||||
#include <queue>
|
||||
using namespace std;
|
||||
|
||||
// 长度限制
|
||||
const int size = 50;
|
||||
|
||||
// 房间类
|
||||
typedef struct room {
|
||||
bool north;
|
||||
bool south;
|
||||
bool east;
|
||||
bool west;
|
||||
room(int s){
|
||||
north = false;
|
||||
south = false;
|
||||
east = false;
|
||||
west = false;
|
||||
switch (s){
|
||||
case 1:
|
||||
west = true;
|
||||
break;
|
||||
case 2:
|
||||
north = true;
|
||||
break;
|
||||
case 3:
|
||||
west = true;
|
||||
north = true;
|
||||
break;
|
||||
case 4:
|
||||
east = true;
|
||||
break;
|
||||
case 5:
|
||||
west = true;
|
||||
east = true;
|
||||
break;
|
||||
case 6:
|
||||
north = true;
|
||||
east = true;
|
||||
break;
|
||||
case 7:
|
||||
west = true;
|
||||
east = true;
|
||||
north = true;
|
||||
break;
|
||||
case 8:
|
||||
south = true;
|
||||
break;
|
||||
case 9:
|
||||
west = true;
|
||||
south = true;
|
||||
break;
|
||||
case 10:
|
||||
south = true;
|
||||
north = true;
|
||||
break;
|
||||
case 11:
|
||||
west = true;
|
||||
south = true;
|
||||
north = true;
|
||||
break;
|
||||
case 12:
|
||||
east = true;
|
||||
south = true;
|
||||
break;
|
||||
case 13:
|
||||
west = true;
|
||||
east = true;
|
||||
south = true;
|
||||
break;
|
||||
case 14:
|
||||
east = true;
|
||||
south = true;
|
||||
north = true;
|
||||
break;
|
||||
case 15:
|
||||
west = true;
|
||||
east = true;
|
||||
south = true;
|
||||
north = true;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
room(){
|
||||
north = false;
|
||||
south = false;
|
||||
east = false;
|
||||
west = false;
|
||||
}
|
||||
} room ;
|
||||
|
||||
// 坐标类
|
||||
typedef struct poi{
|
||||
int x;
|
||||
int y;
|
||||
} poi;
|
||||
|
||||
int main(int argc,char* argv[]){
|
||||
room a[size][size];
|
||||
bool b[size][size];
|
||||
// x是横坐标, y是纵坐标
|
||||
int y, x;
|
||||
scanf("%i %i", &x, &y);
|
||||
for(int i = 0; i < x; i++)
|
||||
for(int j = 0; j < y; j++)
|
||||
b[i][j] = false;
|
||||
|
||||
for(int i = 0; i < x; i++)
|
||||
for(int j = 0; j < y; j++){
|
||||
int s;
|
||||
scanf("%i", &s);
|
||||
a[i][j] = room(s);
|
||||
}
|
||||
// for(int i = 0; i < x; i++)
|
||||
// for(int j = 0; j < y; j++){
|
||||
// printf("when x = %i, y = %i, north = %i, south = %i, west = %i, east = %i\n",
|
||||
// i, j, a[i][j].north ? 1 : 0, a[i][j].south ? 1 : 0, a[i][j].west ? 1 : 0, a[i][j].east ? 1 : 0);
|
||||
// }
|
||||
// return 0;
|
||||
int max = 0;
|
||||
int cnt = 0;
|
||||
|
||||
queue<poi> q;
|
||||
while(!q.empty()) q.pop();
|
||||
|
||||
while(true){
|
||||
int this_max = 1;
|
||||
|
||||
int loop = 0;
|
||||
for(int i = 0; i < x; i++) {
|
||||
for(int j = 0; j < y; j++) {
|
||||
if(b[i][j]) loop++;
|
||||
}
|
||||
}
|
||||
if(loop >= y * x) break;
|
||||
cnt++;
|
||||
bool loop_ = true;
|
||||
if(q.empty()) {
|
||||
// printf("start to find a new room.\n");
|
||||
for(int i = 0; i < x && loop_; i++)
|
||||
for(int j = 0; j < y; j++)
|
||||
if(!b[i][j]) {
|
||||
b[i][j] = true;
|
||||
poi p;p.y = j;p.x = i;q.push(p);
|
||||
// printf("p.x = %i, p.y = %i\n", p.x, p.y);
|
||||
loop_ = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
while(!q.empty()){
|
||||
poi p = q.front();
|
||||
q.pop();
|
||||
// 按理说不需要判断越界。因为边缘有墙。
|
||||
if( !a[p.x][p.y].east && !b[p.x][p.y+1]){
|
||||
p.y++;
|
||||
// printf("p.x = %i, p.y = %i\n", p.x, p.y);
|
||||
b[p.x][p.y] = true;
|
||||
this_max++;
|
||||
q.push(p);
|
||||
p.y--;
|
||||
}
|
||||
if( !a[p.x][p.y].west && !b[p.x][p.y-1]){
|
||||
p.y--;
|
||||
// printf("p.x = %i, p.y = %i\n", p.x, p.y);
|
||||
b[p.x][p.y] = true;
|
||||
this_max++;
|
||||
q.push(p);
|
||||
p.y++;
|
||||
}
|
||||
if( !a[p.x][p.y].south && !b[p.x+1][p.y]){
|
||||
p.x++;
|
||||
// printf("p.x = %i, p.y = %i\n", p.x, p.y);
|
||||
b[p.x][p.y] = true;
|
||||
this_max++;
|
||||
q.push(p);
|
||||
p.x--;
|
||||
}
|
||||
if( !a[p.x][p.y].north && !b[p.x-1][p.y]){
|
||||
p.x--;
|
||||
// printf("p.x = %i, p.y = %i\n", p.x, p.y);
|
||||
b[p.x][p.y] = true;
|
||||
this_max++;
|
||||
q.push(p);
|
||||
// p.x++;
|
||||
}
|
||||
}
|
||||
|
||||
if(this_max > max) max = this_max;
|
||||
}
|
||||
|
||||
printf("%i\n%i", cnt, max);
|
||||
return 0;
|
||||
}
|
||||
/*
|
||||
* 测试数据
|
||||
4
|
||||
7
|
||||
11 6 11 6 3 10 6
|
||||
7 9 6 13 5 15 5
|
||||
1 10 12 7 13 7 5
|
||||
13 11 10 8 10 12 13
|
||||
* 答案
|
||||
5 9
|
||||
*/
|
60
OpenJudge/ch0205_冰封/1818.cpp
Normal file
60
OpenJudge/ch0205_冰封/1818.cpp
Normal file
|
@ -0,0 +1,60 @@
|
|||
#include <stdio.h>
|
||||
#include <queue>
|
||||
using namespace std;
|
||||
const int size = 100;
|
||||
const int go[4][2] = {
|
||||
1, 0, -1, 0,
|
||||
0, 1, 0, -1
|
||||
};
|
||||
char a[size][size];
|
||||
// bool b[size][size];
|
||||
int x,y, cnt = 1;
|
||||
typedef struct poi{
|
||||
int x;
|
||||
int y;
|
||||
poi(){x = 0; y = 0;}
|
||||
poi(int x_, int y_){ x = x_; y = y_;}
|
||||
} poi;
|
||||
|
||||
int main(int argc, char* argv[]){
|
||||
while(true){
|
||||
scanf("%i%i", &y, &x);
|
||||
if(x == 0 && y == 0)
|
||||
break;
|
||||
cnt = 1;
|
||||
poi p;
|
||||
queue<poi> q;
|
||||
for(int i = 0; i < x; i++)
|
||||
scanf("%s", a[i]);
|
||||
for(int i = 0; i < x; i++)
|
||||
for(int j = 0; j < y; j++)
|
||||
if(a[i][j] == '@'){
|
||||
p = poi(i,j);
|
||||
}
|
||||
while (!q.empty()) q.pop();
|
||||
// printf("x = %i, y = %i", p.x, p.y);
|
||||
q.push(p);
|
||||
while(!q.empty()){
|
||||
p = q.front();
|
||||
q.pop();
|
||||
for(int i = 0; i < 4; i++){
|
||||
p.x += go[i][0];
|
||||
p.y += go[i][1];
|
||||
if(p.x < 0 || p.x >= x || p.y < 0 || p.y >= y)
|
||||
goto error233;
|
||||
// if(a[p.x][p.y] == '.' && !b[p.x][p.y]) {
|
||||
if(a[p.x][p.y] == '.') {
|
||||
q.push(p);
|
||||
// b[p.x][p.y] = true;
|
||||
a[p.x][p.y] = '#';
|
||||
cnt++;
|
||||
}
|
||||
error233:
|
||||
p.x -= go[i][0];
|
||||
p.y -= go[i][1];
|
||||
}
|
||||
}
|
||||
printf("%i\n", cnt);
|
||||
}
|
||||
return 0;
|
||||
}
|
36
OpenJudge/ch0206_冰封/7625.c
Normal file
36
OpenJudge/ch0206_冰封/7625.c
Normal file
|
@ -0,0 +1,36 @@
|
|||
#include <stdio.h>
|
||||
#include <memory.h>
|
||||
|
||||
const int size = 0xfff;
|
||||
|
||||
int max(int a, int b) {
|
||||
return a > b ? a : b;
|
||||
}
|
||||
// ass we can
|
||||
int main(int argc, char** argv) {
|
||||
int a[size], c[size], m = -size, i, j, n;
|
||||
memset(a, 0, size);
|
||||
memset(c, 0, size);
|
||||
scanf("%i", &n);
|
||||
for(i = 0; i < n; i++) {
|
||||
for(j = 0; j <= i; j++) {
|
||||
scanf("%i", &c[j]);
|
||||
if(!j) c[j] += a[j];
|
||||
else if(j >= i) c[j] += a[j - 1];
|
||||
else c[j] += max(a[j], a[j - 1]);
|
||||
m = max(m, c[j]);
|
||||
}
|
||||
for(j = 0; j <= i; j++)
|
||||
a[j] = c[j];
|
||||
}
|
||||
printf("%i", m);
|
||||
return 0;
|
||||
}
|
||||
/**
|
||||
5
|
||||
7
|
||||
3 8
|
||||
8 1 0
|
||||
2 7 4 4
|
||||
4 5 2 6 5
|
||||
*/
|
36
OpenJudge/ch0306_冰封/1758.c
Normal file
36
OpenJudge/ch0306_冰封/1758.c
Normal file
|
@ -0,0 +1,36 @@
|
|||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#define SIZE 20
|
||||
|
||||
/*int min(int x,int y){
|
||||
if(x > y) return y;
|
||||
else return x;
|
||||
}*/
|
||||
int a[SIZE],b[SIZE];
|
||||
int main(int argc,char** argv){
|
||||
int x,y;
|
||||
scanf("%d %d",&x,&y);
|
||||
int i,j;
|
||||
int ans = 1;
|
||||
i = 0;
|
||||
while(x > 0){
|
||||
a[i] = x;
|
||||
x /= 2;
|
||||
i++;
|
||||
}
|
||||
j = 0;
|
||||
while(y > 0){
|
||||
b[j] = y;
|
||||
y /= 2;
|
||||
j++;
|
||||
}
|
||||
while(i >= 0 && j >= 0){
|
||||
i--;
|
||||
j--;
|
||||
if(a[i] == b[j] && a[i] > ans){
|
||||
ans = a[i];
|
||||
}
|
||||
}
|
||||
printf("%d", ans);
|
||||
return 0;
|
||||
}
|
Loading…
Reference in New Issue
Block a user