NYIST-2017 대학교 1학년 신입생 첫 주전 문제풀이
18222 단어 [경기 보충문제/경기 코드]
약교 신입생 문제풀이, 큰 소는 속히 떠나라~
A - Thickest Burger
출력 A*2+B 및 A+B*2 큰 1개
#include
int max(int a,int b)
{
if(a>b)
return a;
else
return b;
}
int main()
{
int t,a,b;
scanf("%d",&t);
while(t--)
{
scanf("%d%d",&a,&b);
printf("%d
",max(a*2+b,a+b*2));
}
return 0;
}
B - Relative atomic mass
직접 계산하면 된다
#include
#include
using namespace std;
char s[20];
int main()
{
int t,a,b;
scanf("%d",&t);
while(t--)
{
scanf("%s",s);
int len=strlen(s);
int sum=0;
for(int i=0; iif(s[i]=='C')
sum+=12;
if(s[i]=='H')
sum+=1;
if(s[i]=='O')
sum+=16;
}
printf("%d
",sum);
}
return 0;
}
C - 분할 소수 및
소수를 판단하는 함수를 쓰면 직접적으로 폭력을 행사하면 된다
#include
#include
int prime(int x)
{
int i,flag=1;
for(i=2; i<=sqrt(x); i++)
{
if(x%i==0)
flag=0;
}
return flag;
}
int main()
{
int n,i,j;
while(scanf("%d",&n)!=0&&n)
{
j=0;
for(i=2; i2; i++)
{
if(prime(i)&&prime(n-i))
j++;
}
printf("%d
",j);
}
return 0;
}
D - 소명 A+B
계산할 수 에 대해 100 을 직접 맞추면 된다
#include
int main()
{
int a,b,c,d,n;
scanf("%d",&n);
while(n--)
{
scanf("%d%d",&a,&b);
c=a%100;
d=b%100;
printf("%d
",(c+d)%100);
}
}
E - 정수 풀이
매거 를 통해 폭력적 으로 물 을 건널 수 있다
#include
int main()
{
int n,m;
while(scanf("%d%d",&m,&n)!=EOF)
{
if(m==0&&n==0)
return 0;
int flag=0;
for(int i=-1000; i<=10000; i++)
{
if(i*(m-i)==n)
{
printf("Yes
");
flag=1;
break;
}
}
if(flag==0)
printf("No
");
}
return 0;
}
F - 단어 찾기
우리는 문제를 다중 배낭의 사고방식으로 바꾸어 이해한다.
우선 다중 가방의 일반적인 정의를 살펴보자. N가지 아이템과 V용량의 가방이 있다.i종 물품은 최대 n[i]건이 사용 가능하며, 매 물건의 무게는 c[i]이며, 가치는 w[i]이다.어떤 물품을 가방에 넣으면 이 물품의 비용 총계가 가방 용량을 초과하지 않고 가치 총계가 가장 클 수 있는지 구해 보세요.
이 제목 안에는 26개의 물품이 있고 가방의 용량은 50이다. 모든 물품의 수량 제목은 이미 제시되었다. 이제 모든 물품의 무게만 남았다. 우리는 알파벳의 표지 1-26로 대체할 수 있다.
먼저 상태를 정의한다: dp[i][j]는 i개의 자모가 있고 총 가치가 j일 때 조건에 부합되는 단어의 수량을 우리는 상태 이동 방정식을 얻을 수 있다.
dp[i][j]+=dp[i−1][j−k∗w[i]]
#include
#include
int dp[55][55];
int w[30],num[30];
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
memset(dp,0,sizeof(dp));
memset(w,0,sizeof(w));
for(int i=1; i<=26; i++)
{
w[i]=i;
scanf("%d",&num[i]);
}
dp[0][0]=1;
for(int i=1; i<=26; i++)
for(int j=0; j<=50; j++)
for(int k=0; k<=num[i]&&k*w[i]<=j; k++)//k ,w[i]
dp[i][j]+=dp[i-1][j-k*w[i]];
int ans=0;
for(int i=1; i<=50; i++)
ans+=dp[26][i];
printf("%d
",ans);
}
return 0;
}
G - 협각 크기 II
우리가 배운 벡터의 지식을 되돌아보고, 두 변을 이용하여 협각을 계산하다
cosC=x1∗x2+y1∗y2x21+y21−−−−−−√∗x22+y22−−−−−−√
#include
#include
#define PI 3.1415926535;
int main()
{
double x1,x2,y1,y2;
int T;
double a,b,c;
while(scanf("%d",&T)!=EOF)
{
while(T--)
{
scanf("%lf%lf%lf%lf",&x1,&y1,&x2,&y2);
a=x1*x2+y1*y2;
b=sqrt(x1*x1+y1*y1)*sqrt(x2*x2+y2*y2);
c=acos(a/b)/PI;
c*=180;
printf("%.2lf
",c);
}
}
return 0;
}
H. - 짧은 핸드폰 번호.
문자열에 대한 이해를 깊이 있게 하여 문자열을 어떻게 출력할 수 있는지
#include
int main()
{
int n,i;
char a[12];
scanf("%d",&n);
while(n--)
{
scanf("%s",a);
printf("6%s
",a+6);
}
}
I - C 언어 합법 식별자
c 언어의 합법적인 표지부호가 무엇인지 고찰해 보세요.
#include
#include
char a[66];
int main()
{
int t;
scanf("%d",&t);
getchar();
while(t--)
{
gets(a);
int l=strlen(a);
if(a[0]=='_'||(a[0]>='a'&&a[0]<='z')||(a[0]>='A'&&a[0]<='Z'))
{
int m=0;
for(int i=1; iint flag=0;
if(a[i]=='_'||(a[i]>='a'&&a[i]<='z')||(a[i]>='A'&&a[i]<='Z')||(a[i]>='0'&&a[i]<='9'))
{
flag=1;
}
if(flag==0)
{
printf("no
");
m=1;
break;
}
}
if(m==0)
printf("yes
");
}
else
printf("no
");
}
return 0;
}
제이 - 포켓
아날로그 문제, 사람마다 답이 다를 수 있습니다. 코드는 이런 문제만 참고할 수 있습니다. 일반적으로 그림을 보고 규칙을 찾습니다 + 아날로그
#include
#include
char e[85][85];
char op1[2],op2[2];
int main()
{
int n,T=0;
while(~scanf("%d %s %s",&n,op1,op2))
{
if(T)puts("");
if(n==1)
{
printf("%c
",op1[0]);
continue;
}
char x,a=op1[0],b=op2[0];
int tmp=1;
if(((n+1)/2)%2==1)
{
char c=a;
a=b;
b=c;
}
while(tmp<=(n+1)/2)
{
int m=n-tmp+1;
if (tmp%2==1)x=b;
else x=a;
for(int i=tmp; i<=m; i++)
{
e[tmp][i]=x;
e[m][i]=x;
e[i][tmp]=x;
e[i][m]=x;
}
tmp++;
}
e[1][1]=e[n][n]=e[1][n]=e[n][1]=' ';
for(int i=1; i<=n; i++)
{
for(int j=1; j<=n; j++)
printf("%c",e[i][j]);
puts("");
}
T++;
}
return 0;
}