发表于
28 Dec 2017
总计
2509字
阅读时间
9分
CC BY 4.0
(除特别声明或转载文章外)
如果这篇博客帮助到你,可以请我喝一杯咖啡~
overview
练习使用位运算。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| #include<stdio.h>
int n,t,a[8]= {0};
int main()
{
scanf("%d",&n);
while(n--)
{
scanf("%d",&t);
a[t-1]=1;
}
printf("%d",
!(a[0]&a[1])&
!(a[2]&a[3])&
!(a[4]^a[5])&
(a[6]|a[7]));
}
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| #include<stdio.h>
int n,cnt=0,a[128][128]= {0};
int main()
{
scanf("%d",&n);
for(int i=0; i<n; ++i)
for(int j=0; j<n; ++j)
scanf("%d",&a[i][j]);
for(int i=1; i<n-1; ++i)
for(int j=1; j<n-1; ++j)
if(a[i-1][j]>=a[i][j]+50&&
a[i+1][j]>=a[i][j]+50&&
a[i][j-1]>=a[i][j]+50&&
a[i][j+1]>=a[i][j]+50)
++cnt;
printf("%d",cnt);
}
|
1
2
3
4
5
6
7
8
9
10
11
12
13
| #include<stdio.h>
#include<stdlib.h>
int a[3];
int intGreaterCmp(const void *a,const void *b)
{
return *(int*)b-*(int*)a;
}
int main()
{
scanf("%d%d%d",&a[0],&a[1],&a[2]);
qsort(a,3,sizeof(int),intGreaterCmp);
printf("%d %d %d",a[0],a[1],a[2]);
}
|
1
2
3
4
5
6
7
8
9
10
| #include<stdio.h>
#include<math.h>
int a,n,s=0;
int main()
{
scanf("%d%d",&a,&n);
for(int i=1; i<=n; ++i)
s+=(pow(10,i)-1)/9*a;
printf("%d",s);
}
|
1
2
3
4
5
6
7
8
9
10
| #include<stdio.h>
int main()
{
for(int a=1; a<=100; ++a)
for(int b=a; b<=100; ++b)
for(int c=b; c<=100; ++c)
if(a*a+b*b==c*c)
printf("%d*%d + %d*%d = %d*%d\n",
a,a,b,b,c,c);
}
|
即斐波那契数列第 n+1 项。
1
2
3
4
5
6
7
8
9
10
11
12
13
| #include<stdio.h>
int work(int n)
{
static int f[32]= {1,1};
if(f[n])return f[n];
return f[n]=work(n-1)+work(n-2);
}
int main()
{
int n;
scanf("%d",&n);
printf("%d",work(n));
}
|
也可以像这样不用数组直接递推。
1
2
3
4
5
6
7
8
9
10
11
| int work(int n)
{
int a=1;
for(int i=2,b=1,c; i<=n; ++i)
{
c=a;
a+=b;
b=c;
}
return a;
}
|
注意到每只小白鼠的体重都不同且范围小,存表比排序更快。
1
2
3
4
5
6
7
8
9
10
11
| #include<stdio.h>
char color[1024][16]= {0};
int n,t;
int main()
{
for(scanf("%d",&n); n--;)
scanf("%d%s",&t,color[t]);
for(int i=1000; i; --i)
if(color[i][0])
printf("%s\n",color[i]);
}
|
1
2
3
4
5
6
7
8
9
10
11
12
| #include<stdio.h>
#include<string.h>
char s[128][128];
int cnt=0;
int main()
{
while(scanf("%s",s[cnt++])!=EOF);
for(int i=0; i<=cnt-4; ++i)
printf("%s ",
strcmp(s[i],s[cnt-3])?
s[i]:s[cnt-2]);
}
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| #include<stdio.h>
int k,ans=0,h[32],f[32];
int main()
{
scanf("%d",&k);
for(int i=0; i!=k; ++i)
{
scanf("%d",&h[i]);
for(int j=f[i]=0; j!=i; ++j)
if(h[i]<=h[j]&&f[i]<f[j]+1)
f[i]=f[j]+1;
if(ans<f[i])ans=f[i];
}
printf("%d",ans+1);
}
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| #include<stdio.h>
#include<string.h>
int k,n,a;
int main()
{
for(scanf("%d%d",&k,&n); n--;)
{
char s[9];
scanf("%s%d",s,&a);
if(!strcmp(s,"plus"))
k+=a;
if(!strcmp(s,"minus"))
k-=a;
if(!strcmp(s,"multiply"))
k*=a;
}
printf("%d",k);
}
|