代码
/*
网友年龄
某君新认识一网友。
当问及年龄时,他的网友说:
“我的年龄是个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;
}