zl程序教程

您现在的位置是:首页 >  其它

当前栏目

第七届A组

第七届
2023-09-27 14:27:29 时间


代码

/*
网友年龄
某君新认识一网友。
当问及年龄时,他的网友说:
“我的年龄是个2位数,我比儿子大27岁,
如果把我的年龄的两位数字交换位置,刚好就是我儿子的年龄”
请你计算:网友的年龄一共有多少种可能情况?
提示:30岁就是其中一种可能哦.
请填写表示可能情况的种数。
注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。

*/
#include<stdio.h>
int main()
{
	int a,b,er,count=0; 
	for(int x=27;x<=99;x++){
		a=x/10;
		b=x%10;
		er=b*10+a;
		if(er+27==x){
			count++;
			printf("%d种可能:父亲%d岁     儿子%d岁\n",count,x,er);
			
		}
	}
	return 0;
}


生日蜡烛
某君从某年开始每年都举办一次生日party,
并且每次都要吹熄与年龄相同根数的蜡烛。
现在算起来,他一共吹熄了236根蜡烛。
请问,他从多少岁开始过生日party的?
请填写他开始过生日party的年龄数。
注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。


#include<stdio.h>
int main()
{
	int n,x,flag=0;
        for(x=1;x<100;x++){
        	for(n=1;n<100;n++){
	    	if((n+1)*x+n*(n+1)/2!=236)
	    	{
	    		continue;
	    	}else
	    	{
	    		flag=1;
	    		break;
	    	}
	      }
	    	if(flag)
	    	break;
        }
    printf("从第%d岁开始过生日,过了%d年\n",x,n);		
	return 0;
}

/*消除尾一
下面的代码把一个整数的二进制表示的最右边的连续的1全部变成0
如果最后一位是0,则原数字保持不变。
如果采用代码中的测试数据,应该输出:
00000000000000000000000001100111   00000000000000000000000001100000
00000000000000000000000000001100   00000000000000000000000000001100
请仔细阅读程序,填写划线部分缺少的代码。

*/
#include <stdio.h>

void f(int x)
{
	int i;
	for(i=0; i<32; i++) printf("%d", (x>>(31-i))&1);
	printf("   ");

	//x = _______________________;
	x =x&(x+1);
	//如果后面都是1的 X ,加上1之后的X后面就为0.
	//例如011111变为100000 ,再与之前的X去与
	//就变为000000
	//例如110000变为110001 ,再与之前的X去与
	//变为110000 
	for(i=0; i<32; i++) printf("%d", (x>>(31-i))&1);
	printf("\n");
}

int main()
{
	f(103);
	f(12);
	return 0;
}
-------------------------------
寒假作业
现在小学的数学题目也不是那么好玩的。
看看这个寒假作业:
   □ + □ = □
   □ - □ = □
   □ × □ = □
   □ ÷ □ = □
   (如果显示不出来,可以参见【图1.jpg】)
每个方块代表1~13中的某一个数字,但不能重复。
比如:
 6  + 7 = 13
 9  - 8 = 1
 3  * 4 = 12
 10 / 2 = 5
以及: 
 7  + 6 = 13
 9  - 8 = 1
 3  * 4 = 12
 10 / 2 = 5
就算两种解法。(加法,乘法交换律后算不同的方案)
你一共找到了多少种方案?
请填写表示方案数目的整数。
注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。

#include<stdio.h>
int a[13]={0};
int main()
{

    int count=0;
    for( a[1]=1;a[1]<=13;a[1]++){
    	for( a[2]=1;a[2]<=13;a[2]++){
    		a[3]=a[1]+a[2];
    		if((a[1]!=a[2])&&(a[3]!=a[1])&&(a[3]!=a[2])&&a[3]<=13&&a[1]>0)
    		{
    		 for( a[4]=1;a[4]<=13;a[4]++){
    	         for( a[5]=1;a[5]<=13;a[5]++){
    		     a[6]=a[4]-a[5];
    		     if((a[6]!=a[4])&&(a[6]!=a[5])&&(a[5]!=a[4])&&a[6]<=13&&a[6]>0)
    		     {
    			    for( a[7]=1;a[7]<=13;a[7]++){
	    	            for( a[8]=1;a[8]<=13;a[8]++){
	    		     a[9]=a[7]*a[8];
	    		     if((a[7]!=a[8])&&(a[7]!=a[9])&&(a[8]!=a[9])&&a[9]<=13&&a[9]>0)
	    		     {
	    			 for( a[10]=1;a[10]<=13;a[10]++){
		    	         for( a[11]=1;a[11]<=13;a[11]++){
		    		     a[12]=a[10]/a[11];
		    		     if((a[10]%a[11]==0)&&(a[10]!=a[11])&&(a[10]!=a[12])&&(a[11]!=a[10])&&a[12]<=13&&a[12]>0)
		    		         {
		    		             int flag=1;
		    			     for(int i=1;i<=12;i++){
		    			     for(int j=i+1;j<=12;j++){
		    			     		if(a[i]==a[j])
		    			     		{
                                    flag=0;
		    			     		continue;
		    			     		}


		    			     	}
		    			     }
		    			     if(flag)
		    			     		{
		    			     		count++;
		    			     		printf("%d+%d=%d  %d-%d=%d  %d*%d=%d  %d/%d=%d\n",a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9],a[10],a[11],a[12]);


		    			     		}
		    		     }

	    		     }
	    	             }

    		        }

    }
    }
    }
}}}


}
    }
    printf("%d\n",count);
    return 0;
}


/* 
四平方和
四平方和定理,又称为拉格朗日定理:
每个正整数都可以表示为至多4个正整数的平方和。
如果把0包括进去,就正好可以表示为4个数的平方和。
比如:
5 = 0^2 + 0^2 + 1^2 + 2^2
7 = 1^2 + 1^2 + 1^2 + 2^2
(^符号表示乘方的意思)
对于一个给定的正整数,可能存在多种平方和的表示法。
要求你对4个数排序:
0 <= a <= b <= c <= d
并对所有的可能表示法按 a,b,c,d 为联合主键升序排列,最后输出第一个表示法

程序输入为一个正整数N (N<5000000)
要求输出4个非负整数,按从小到大排序,中间用空格分开
例如,输入:
5
则程序应该输出:
0 0 1 2
再例如,输入:
12
则程序应该输出:
0 2 2 2
再例如,输入:
773535
则程序应该输出:
1 1 267 838
*/
#include<stdio.h>
#include<math.h>
#define N 5000000
int main()
{   
   int a[5];
   int n;
   int flag=0;
   scanf("%d",&n);
    for(a[1]=0;a[1]<n/2;a[1]++){
   	for(a[2]=a[1];a[2]<n/2;a[2]++){
   	for(a[3]=a[2];a[3]<n/2;a[3]++){
   	for(a[4]=a[3];a[4]<n/2;a[4]++){
   	if(pow(a[1],2)+pow(a[2],2)+pow(a[3],2)+pow(a[4],2)==n)
   	{
   		flag=1;
   		break;
   	}
   }
   if(flag)
   break;
   }
   if(flag)
   break;
   }
   if(flag)
   break;
   }
   	printf("%d %d %d %d\n",a[1],a[2],a[3],a[4]);
	  return 0;
}