蓝桥杯—2017模拟

来源:互联网 发布:福州趣读网络 编辑:程序博客网 时间:2024/04/30 05:12

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;}
运行结果:


0 0