平方数:
这个题目其实是很简单的哦,就是直接枚举暴力就可以了哦。唯一要注意的就是因为有x*x,因此要小心就是可能在计算x*x的时候会溢出,因此要开__int64位!
#include <stdio.h>
#define MAX 1000
int main()
{
int n;
scanf("%d",&n);
__int64 a[MAX];
while(n){
int i;
__int64 x;
for(i=0;i<n;i++){
scanf("%I64d",&x);
a[i]=x;
}
int j;
int cnt=0;
for(i=0;i<n;i++){
for(j=0;j<n;j++){
if(a[i]==a[j]*a[j]){
cnt++; //如果符合条件就加一
}
}
}
printf("%d\n",cnt);
scanf("%d",&n);
}
return 0;
}
N!
这个题目要小心的就是0!=1,还有就是同余定理的运用哦!
#include <stdio.h>
#include <math.h>
#define num 10007
int main(){
int n;
while(scanf("%d",&n)!=EOF && n!=-1){
int res=1;
for(int i=n;i>1;i--){
res=res*i%num;
}
printf("%d\n",res);
}
}
字母三角形和字母圣诞树
这种题目就是根据题目来模拟哦,考试一定会有一个这样的模拟题的,因此这种题目一定要掌握哦。还有这种题目要注意个细节就是要用getchar()来吸收scanf中落下的回车符号。
#include <stdio.h>
int main(){
char x;
int cnt=1;
while(scanf("%c",&x)!=EOF && x!='#'){
getchar();//吸收空格哦
printf("case %d:\n",cnt);
int h=x-'A'+1;
char m=x;
for(int i=0;i<h;i++){
//空格
for(int j=0;j<i;j++) printf(" ");
for(char i='A';i<=m;i++){
printf("%c",i);
}
for(char i=m-1;i>='A';i--){
printf("%c",i);
}
printf("\n");
m--;
}
cnt++;
}
return 0;
}
爱你一生一世
这个题目是一个很典型的组合数的题目哦。同时这个题目如果从正面来做就要小心m=1时这个特殊情况哦。
#include <stdio.h>
#include <math.h>
#define num 10007
int gcd(int x,int y){
return y?gcd(y,x%y):x;
}
int main(){
int k;
scanf("%d",&k);
while(k--){
int n,m;
scanf("%d %d",&n,&m);
//正难则反
int x=n*n-n-m*m+m;
int y=n*n-n;
if(x%y==0) printf("%d\n",x/y);
else printf("%d/%d\n",x/gcd(x,y),y/gcd(x,y));
}
}
Repete one
这个题目就是先排除一定没有答案的偶数和5的倍数,其他的都会有答案,因此采用暴力的方法哦。
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main(){
int k;
scanf("%d",&k);
while(k--){
int n;
scanf("%d",&n);
if(n%2==0||n%5==0) printf("0\n");
else if(n==1) printf("1\n");
else{
int x=1,cnt=1,wei=10;
while(x){
x=(x+wei)%n;
cnt++;
wei=wei*10%n;
}
printf("%d\n",cnt);
}
}
return 0;
}
比赛
这个题目就是直接根据题目意思来写就可以了哦。
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>
int main(){
int k;
scanf("%d",&k);
while(k--){
int n;
scanf("%d",&n);
int cnt=0,ans=0;
while(n!=1){
int n1=n,t=1;
while(n1){
n1/=2;t*=2;
}
t/=2;
ans+=t/2;
cnt++;
n-=t/2;
}
printf("%d %d\n",cnt,ans);
}
return 0;
}
A+B IV
这个题目就是暴力+注意一些细节就好啦。
#include<stdio.h>
int main ()
{
int K,a,b,c;
scanf ("%d",&K);
while (K--){
scanf ("%d+%d=%d",&a,&b,&c);
if (a+b==c){
printf ("0\n");
}
int d=a,e=b,m=0,n=0;
while (a+b!=c){
d=d*10,e=e*10,m++,n--;
if (d+b==c){
printf ("%d\n",m);
a=d;
}
if (a+e==c&&d+b!=c){
printf ("%d\n",n);
b=e;
}
}
}
return 0;
}