P63
#include<stdio.h>
long long factorial(int n)
{
long long s=1;
for(int i=1;i<=n;i++)
s=s*i;
return s;
}
int main()
{
int n,m;
scanf("%d%d",&n,&m);
long long s=1;
for(int i=m+1;i<=n;i++)
{
s=s*i;
}
for(int i=1;i<=m-n;i++)
{
s=s/i;
}
printf("%d\n",s);
return 0;
}
P64 predicate
#include<stdio.h>
int main()
{
int n;
while(scanf("%d",&n)==1)
{
if(n==1)
{
printf("1 is not a prime number.\n");
continue;
}
if(n=='\n'||n=='\r')
continue;
int i=1;
int flag=0;
for(i=1;i<n;i++)
{
if(n%i==0)
{
if(i!=1)
{
printf("%d is not a prime number.\n",n);
flag=1;
break;
}
}
}
if(!flag)
printf("%d is a prime number.\n",n);
flag=0;
}
//char s;
return 0;
}
P64 is it a prime?
#include<stdio.h>
int is_prime(int n) //is_xx predicate function
{
for(int i=2;i*i<=n;i++) //optimization i*i is bug
{
if(n%i==0)
return 0;
}
return 1;
}
int main()
{
int n;
while(scanf("%d",&n)==1)
{
if(n<1)
continue;
if(is_prime(n))
printf("%d is a prime number.\n",n);
else
printf("%d is not a prime number.\n",n);
}
return 0;
}
//P64
#include<stdio.h>
#include<math.h>
int is_prime(int n)
{
if(n<=1)
return 0;
int m=(int)floor(sqrt((float)n)+0.5); //core code
for(int i=2;i<=m;i++)
if(n%i==0)
return 0;
return 1;
}
int main()
{
int n;
while(scanf("%ld",&n)==1)
{
if(is_prime(n))
printf("%d is a prime number.\n",n);
else
printf("%d is not a prime number.\n",n);
}
return 0;
}
P65
#include<stdio.h>
void swap(int a,int b)
{
int t;
t=a,a=b,b=t;
}
int main()
{
int a,b;
scanf("%d%d",&a,&b);
swap(a,b);
printf("%d %d\n",a,b);
return 0;
}
#include<stdio.h>
void swap(int *a,int *b)
{
int *t;
t=a;
a=b;
b=t;
}
int main()
{
int a,b;
scanf("%d%d",&a,&b);
swap(&a,&b);
printf("%d %d\n",a,b);
return 0;
}
#include<stdio.h>
void swap(int *a,int *b)
{
int t;
t=*a;
*a=*b;
*b=t;
}
int main()
{
int a,b;
scanf("%d%d",&a,&b);
swap(&a,&b);
printf("%d %d\n",a,b);
return 0;
}
P72 4-8
#include<stdio.h>
int sum1(int *a,int n)
{
int s=0;
for(int i=0;i<n;i++)
{
s=s+*(a+i);
}
return s;
}
int sum2(int *begin,int *end)
{
int n=end-begin;
int ans=0;
for(int i=0;i<n;i++)
{
ans+=begin[i];
}
return ans;
}
int sum3(int *begin,int *end)
{
int *p=begin;
int ans=0;
for(;p!=end;p++)
{
ans+=*p;
}
return ans;
}
int main()
{
char n='0';
int a[6]={1,2,3,4,5,6};
printf("%d\n",sum1(a+1,3));
return 0;
}
P73 例题4-1
#include<stdio.h>
int main()
{
int n;
scanf();
return 0;
}
算法竞赛入门经典第二版 第四章
最新推荐文章于 2021-02-03 15:28:13 发布