1.P5735 【深基7.例1】距离函数
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//#include <time.h>
double getDis(double x1,double y1,double x2,double y2);
int main ()
{
int i,j;
double x[4],y[4],s=0;
for(i=0;i<3;i++){
scanf("%lf%lf",&x[i],&y[i]);
}
for(i=0;i<2;i++){
for(j=i+1;j<3;j++){
s+=getDis(x[i],y[i],x[j],y[j]);
}
}
printf("%.2lf",s);
return 0;
}
double getDis(double x1,double y1,double x2,double y2)
{
/* 获取两点之间的距离*/
double dis;
double x=x2-x1;
double y=y2-y1;
dis=sqrt((x*x)+(y*y));
return dis;
}
2.P5736 【深基7.例2】质数筛
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#define MAX 100001
int isPrimeNumber(int a);
int main(){
int n,a[MAX],b[MAX]={0};
scanf("%d",&n);
int i;
for(i=0;i<n;i++){
scanf("%d",&a[i]);
if(isPrimeNumber(a[i])&&a[i]!=1){
b[i]=a[i];
}
else{
}
}
for(i=0;i<n;i++){
if(b[i]!=0){
printf("%d ",b[i]);
}
}
}
int isPrimeNumber(int a){
int i;
for(i=2;i<=sqrt(a);i++){
if(a%i==0){break;
}
}
if(i<=sqrt(a))return 0;
else return 1;
}
3.P5737 【深基7.例3】闰年展示
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#define MAX 10001
int isLeapYear(int year)
{
if (year % 400 == 0)
return 1;
else if (year % 4 == 0 && year % 100 != 0)
return 1;
else
return 0;
}
int main()
{
int a, b;
int i, j, yaer[MAX], count = 0;
;
scanf("%d%d", &a, &b);
for (i = a; i <= b; i++)
{
if (isLeapYear(i))
count++;
}
printf("%d\n", count);
for (i = a; i <= b; i++)
{
if (isLeapYear(i))
printf("%d ", i);
}
}
4.P5738 【深基7.例4】歌唱比赛
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#define MAX 10001
int main()
{
int n, m, a, max = 0, min = MAX, s[MAX] = {0};
double grade[MAX];
scanf("%d%d", &n, &m);
int i, j;
for (i = 0; i < n; i++)
{
max = 0;
min = MAX;
for (j = 0; j < m; j++)
{
scanf("%d", &a);
s[i] += a;
if (a > max)
max = a;
if (a < min)
min = a;
}
grade[i] = 1.0 * (s[i] - min - max) / (m - 2);
}
double t = 0;
for (j = 0; j < n; j++)
{
if (grade[j] > t)
t = grade[j];
}
printf("%.2f", t);
}
5.P5739 【深基7.例7】计算阶乘
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#define MAX 1000001
int n;
long long int m=1;
void factorial(int x){
m*=x;
if(x==n)return;
factorial(x+1);
}
int main(){
scanf("%d",&n);
factorial(1);
printf("%lld",m);
return 0;
}
6.P5461 赦免战俘
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#define MAX 2001
int n;
int a[MAX][MAX];
int m;
void absolve(int x,int w,int v){
if(x==2){
a[w][v]=0;
return;
}
int i,j;
for(i=w;i<w+x/2;i++){
for(j=v;j<v+x/2;j++){
a[i][j]=0;
}
}
absolve(x/2,w+x/2,v);
absolve(x/2,w+x/2,v+x/2);
absolve(x/2,w,v+x/2);
}
int main(){
scanf("%d",&n);
int s=1;
int i,j;
for(i=1;i<=n;i++){
s*=2;
}
//printf("%d",s);
for(i=1;i<=s;i++){
for(j=1;j<=s;j++){
a[i][j]=1;
}
}
absolve(s,1,1);
for(i=1;i<=s;i++){
for(j=1;j<=s;j++){
printf("%d ",a[i][j]);
}
printf("\n");
}
}
7.P5740 【深基7.例9】最厉害的学生
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#define MAX 999
int n;
struct Grade
{
char name[10];
int chinese;
int math;
int English;
int sum;
} student[MAX];
int main()
{
scanf("%d\n", &n);
int i, max = -1, t;
for (i = 0; i < n; i++)
{
scanf("%s %d %d %d\n", &student[i].name, &student[i].chinese, &student[i].math, &student[i].English);
student[i].sum = student[i].chinese + student[i].math + student[i].English;
}
for (i = 0; i < n; i++)
{
if (student[i].sum > max)
{
max = student[i].sum;
t = i;
}
}
printf("%s %d %d %d", student[t].name, student[t].chinese, student[t].math, student[t].English);
}
8.P5741 【深基7.例10】旗鼓相当的对手 - 加强版
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
struct Student
{
char name[10];
int chinese;
int math;
int English;
int sum;
} s[1001];
int main()
{
int n;
scanf("%d\n", &n);
int i, j;
for (i = 1; i <= n; i++)
{
scanf("%s %d %d %d\n", &s[i].name, &s[i].chinese, &s[i].math, &s[i].English);
s[i].sum = s[i].chinese + s[i].math + s[i].English;
}
for (i = 1; i <= n; i++)
{
for (j = i + 1; j <= n; j++)
{
if (abs(s[i].chinese - s[j].chinese) <= 5 &&
abs(s[i].math - s[j].math) <= 5 &&
abs(s[i].English - s[j].English) <= 5 &&
abs(s[i].sum - s[j].sum) <= 10)
printf("%s %s\n", s[i].name, s[j].name);
}
}
}
9.P5742 【深基7.例11】评等级
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#define MAX 1001
int n;
struct Student
{
int sno;
int grade;
int Qgrade;
double Cgrade;
int sum;
} s[MAX];
int main()
{
scanf("%d\n", &n);
int i, j;
for (i = 0; i < n; i++)
{
scanf("%d %d %d\n", &s[i].sno, &s[i].grade, &s[i].Qgrade);
s[i].Cgrade = s[i].grade * 7 + s[i].Qgrade * 3;
s[i].sum = s[i].grade + s[i].Qgrade;
}
for (i = 0; i < n; i++)
{
if (s[i].sum > 140 && s[i].Cgrade >= 800)
printf("Excellent\n");
else
printf("Not excellent\n");
}
}
10.P1075 [NOIP2012 普及组] 质因数分解
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
int n,i,max=0,t;
scanf("%d",&n);
for(i=2;i<sqrt(n);i++){
t=i;
if(n%t==0)max=t;
}
printf("%d",n/max);
}
11.P1304 哥德巴赫猜想
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#define MAX 100001
int N;
int isPrimeNumber(int a)
{
//判断质数
int i;
for (i = 2; i < sqrt(a); i++)
{
if (a % i == 0)
{
break;
}
}
if (i <= sqrt(a))
return 0;
else
return 1;
}
int main()
{
scanf("%d", &N);
int i, j, a, b, t;
for (i = 4; i <= N; i += 2)
{
t = i;
for (j = 2; j < t; j++)
{
if (isPrimeNumber(j) && isPrimeNumber(t - j))
{
printf("%d=%d+%d\n", t, j, t - j);
break;
}
}
}
return 0;
}
12.P1217 [USACO1.5] 回文质数 Prime Palindromes
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
int isPrimeNumber(int x)
{
int i;
for (i = 2; i < sqrt(x); i++)
{
if (x % i == 0)
break;
}
if (i <= sqrt(x))
return 0;
else
return 1;
}
int main()
{
int a, b;
scanf("%d%d", &a, &b);
int d1, d2, d3, d4, palindrome;
//简单粗暴生成回文数
for (d1 = 1; d1 <= 9; d1 += 2)
{
palindrome = d1;
if (isPrimeNumber(palindrome) && palindrome >= a && palindrome <= b)
printf("%d\n", palindrome);
}
for (d1 = 1; d1 <= 9; d1 += 2)
{
palindrome = 10 * d1 + d1;
if (isPrimeNumber(palindrome) && palindrome >= a && palindrome <= b)
printf("%d\n", palindrome);
}
for (d1 = 1; d1 <= 9; d1 += 2)
{
for (d2 = 0; d2 <= 9; d2++)
{
palindrome = 100 * d1 + 10 * d2 + d1;
if (isPrimeNumber(palindrome) && palindrome >= a && palindrome <= b)
printf("%d\n", palindrome);
}
}
for (d1 = 1; d1 <= 9; d1 += 2)
{
for (d2 = 0; d2 <= 9; d2++)
{
palindrome = 1000 * d1 + 100 * d2 + 10 * d2 + d1;
if (isPrimeNumber(palindrome) && palindrome >= a && palindrome <= b)
printf("%d\n", palindrome);
}
}
for (d1 = 1; d1 <= 9; d1 += 2)
{
for (d2 = 0; d2 <= 9; d2++)
{
for (d3 = 0; d3 <= 9; d3++)
{
palindrome = 10000 * d1 + 1000 * d2 + 100 * d3 + 10 * d2 + d1;
if (isPrimeNumber(palindrome) && palindrome >= a && palindrome <= b)
printf("%d\n", palindrome);
}
}
}
for (d1 = 1; d1 <= 9; d1 += 2)
{
for (d2 = 0; d2 <= 9; d2++)
{
for (d3 = 0; d3 <= 9; d3++)
{
palindrome = 100000 * d1 + 10000 * d2 + 1000 * d3 + 100 * d3 + 10 * d2 + d1;
if (isPrimeNumber(palindrome) && palindrome >= a && palindrome <= b)
printf("%d\n", palindrome);
}
}
}
for (d1 = 1; d1 <= 9; d1 += 2)
{
for (d2 = 0; d2 <= 9; d2++)
{
for (d3 = 0; d3 <= 9; d3++)
{
for (d4 = 0; d4 <= 9; d4++)
{
palindrome = 1000000 * d1 + 100000 * d2 + 10000 * d3 + 1000 * d4 + 100 * d3 + 10 * d2 + d1;
if (isPrimeNumber(palindrome) && palindrome >= a && palindrome <= b)
printf("%d\n", palindrome);
}
}
}
}
}
13.P2415 集合求和
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
int main(){
long long int a,n,s=0;
while(scanf("%lld",&a)!=EOF){
n++;
s+=a;
}
int i;
for(i=1;i<n;i++){
s*=2;
}
printf("%lld",s);
}
14.P5743 【深基7.习8】猴子吃桃
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#define MAX 100001
int main(){
int n,i,m=1;
scanf("%d",&n);
for(i=2;i<=n;i++){
m=(m+1)*2;
}
printf("%d",m);
}
15.P5744 【深基7.习9】培训
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#define MAX 100001
struct Student
{
char name[20];
int age;
int Lgrade;
int Ngrade;
} s[MAX];
int main()
{
int n;
scanf("%d\n", &n);
int i, j;
for (i = 0; i < n; i++)
{
scanf("%s %d %d\n", &s[i].name, &s[i].age, &s[i].Lgrade);
s[i].age++;
s[i].Ngrade = s[i].Lgrade * 1.2;
if (s[i].Ngrade >= 600)
s[i].Ngrade = 600;
}
for (i = 0; i < n; i++)
{
printf("%s %d %d\n", s[i].name, s[i].age, s[i].Ngrade);
}
}