蓝桥杯—2017模拟

1.标题:算年龄

英国数学家德摩根出生于19世纪初叶(即18xx年)。
他年少时便很有才华。一次有人问他的年龄,他回答说:
“到了x的平方那年,我刚好是x岁”。

请你计算一下,德摩根到底出生在哪一年。
题中的年龄指的是周岁。

请填写表示他出生年份的四位数字,不要填写任何多余内容。

#include<iostream>
using namespace std;
int main()
{
    for(int i=35;i<48;i++)
    {
        cout<<i<<": "<<i*i<<"   ";
        int year=i*i-i;
        cout<<year<<endl;
    }
    return 0;
}

运行结果:

因为是19世纪初叶,所以是1806

2.题目:猜算式

#include<stdio.h>
#include<math.h>
#include<stdlib.h>
int check(int i,int * f)  //f数组表示十个数字的个数
{
    while(i>0)            //判断i式子内各数字的个数,存入数组下标所对应的数组,即f[10]内。
    {
        if(f[i%10]==2)  //只要f[a]不等于a,则f[a]++;
        {
            return 0;
        }
        f[i%10]++;
        i/=10;
    }
    return 1;
}
int main()
{
    for(int i = 100; i<=999; i++)
    {
        for(int j = 100; j<=999; j++)
        {
            int f[10] = {0};    //f数组表示十个数字的个数
            int a = i*(j%10);   //第一个数乘第二个数的个位
            int b = i*(j/10%10);//第一个数乘第二个数的十位
            int c = i*(j/100);  //第一个数乘第二个数的百位
            if(a>=1000||b>=1000||c>=1000||i*j>=100000||a<100||b<100||c<100)
                continue;
            //i,j,a,b,c,i*j
            if(check(i,f)&&check(j,f)&&check(a,f)&&check(b,f)&&check(c,f)&&check(i*j,f))
            {//依次判断六个式子内各数字出现的个数是否等于2
                printf("%d %d %d %d %d %d",i,j,a,b,c,i*j);
            }
        }
    }
    return 0;
}
运行结果:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值