2014年填空

2014年省赛A组C++

A、猜年龄 数字条件判断

小明带两个妹妹参加元宵灯会。别人问她们多大了,她们调皮地说:“我们俩的年龄之积是年龄之和的6倍”小明又补充说:“她们可不是双胞胎,年龄差肯定也不超过8岁啊。”
请你写出:小明的较小的妹妹的年龄。
10:遍历找满足等式的年龄

int main(){
    int i,j;
    for (i=1;i<100;i++){
        for (int j=i+1;j<=i+8;j++){
            if (i*j==(i+j)*6){
                //cout<<i<<" "<<j<<" "<<i*j<<" "<<(i+j)*6<<endl;
                cout<<i<<endl;
                break;
            }
        }
    }
    return 0;
}

B、切面条 数学题找规律

一根高筋拉面,中间切一刀可以得到2根面条;如果先对折1次中间切一刀,可以得到3根面条;如果连续对折2次,中间切一刀,可以得到5根面条。那么,连续对折10次,中间切一刀,会得到多少面条呢?
1025=2^10+1
在这里插入图片描述

C、神奇算式

由4个不同的数字,组成的一个乘法算式,它们的乘积仍然由这4个数字组成。比如:
210x6=1260
8x473=3784
27x81=2187
都符合要求。
如果满足乘法交换律的算式算作同一种情况,那么,包含上边已列出的3种情况,一共有多少种满足要求的算式。
12:分1位3位和2位2位的情况,用map去重并寻找

map<int,int> have;
//没有重复数字
bool legal(int x){
    have.clear();
    while (x){
        if (have.find(x%10)==have.end())
            have[x%10]=1;
        else return false;
        x/=10;
    }
    return true;
}
//乘积仍由这四个数字组成
bool issame(int x){
    while (x){
        if (have.find(x%10)!=have.end()){
            if (have[x%10]==1) have[x%10]=0;//没用过
            else return false; //数字用过
        }
        else return false; //不包含
        x/=10;
    }
    return true;
}
int main(){
    int cnt=0;
    //1位数*3位数=4位数
    for (int i=1;i<10;i++){
        for (int j=100;j<1000;j++){
            if (legal(j*10+i)){//该四位数各位不同
                if (i*j>999 && i*j<10000 && issame(i*j)) cnt+=1;
            }
        }
    }
    //2位数*2位数=4位数
    for (int i=10;i<100;i++){
        for (int j=i;j<100;j++){//别重复数
            if (legal(j*100+i)){//该四位数各位不同
                if (i*j>999 && i*j<10000 && issame(i*j)) cnt+=1;
            }
        }
    }
    cout<<cnt;
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值