2015年填空

这篇博客介绍了通过编程解决数学问题的方法,包括暴力求解方程整数解,计算特定日期的定时炸弹爆炸日期,以及寻找具有特定数字特性的奇妙数字。涉及到的编程技巧包括循环、条件判断和日期运算,同时展现了数学与编程的紧密联系。
摘要由CSDN通过智能技术生成

2015年省赛A组C++

A、方程整数解 三重循环暴力

方程:a^2 + b^2 + с^2 = 1000这个方程有正整数解吗?
有:a,b,c=6,8,30 就是一组解。你能简出另一组合适的解吗?
请填写该解中最小的数字。
10:按等式条件求得10,18,24

int main(){
    int i,j,k;
    for (i=1;i<1000;i++){
        for (j=i;j<1000;j++){
            for (k=j;k<1000;k++){
                if (i*i+j*j+k*k==1000){
                    cout<<i<<" "<<j<<" "<<k<<endl;
                }
            }
        }
    }
    return 0;
}

B、星系炸弹 日期计数

在X星系的广裹空间中漂浮着许多X星人造“炸弹”,阿尔法炸弹2015年1月1日放置,定时为15天,则它在2015年1月16日爆炸。有一个贝塔炸弹,2014年11月9日放置,定时为1000天,请你计算它爆炸的准确日期。
请填写该日期,格式为 yyyy-mm-dd 即4位年份2位月份2位日期。
比如:2015-02-19
2017-08-05:思路同2013A高斯日记,去掉年末从新一年年初开始算

bool isrun(int x){ //是否闰年
    if (x%400==0) return true;
    if (x%100 && x%4==0) return true;
    return false;
}
int main(){
    int year=2015,month=1,in=1000-21-31;//从2015年算
    int m[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
    //哪一年
    while (1){
        if (isrun(year)&&in>365) in-=366;
        else if (!isrun(year)&&in>=365) in-=365;
        else break;
        year+=1;
    }
    //哪一月
    if (isrun(year)) m[4]=29;
    while (1){
        if (in>=m[month]) in-=m[month++];
        else break;
    }
    cout<<year<<"-0"<<month<<"-0"<<in;
    return 0;
}

C、奇妙的数字 根据规则暴力找数字

小明发现了一个奇妙的数字。它的平方和立方正好把0~9的10个数字每个用且只用了一次。你能猜出这个数字是多少吗?
69:使用map的find和size即可

map<int,int> have;
bool isfind(int x){
    int a=x*x,b=x*x*x;
    have.clear();
    while (a){//平方
        if (have.find(a%10)==have.end())
            have[a%10]=1;
        else return false;
        a/=10;
    }
    while (b){//立方
        if (have.find(b%10)==have.end())
            have[b%10]=1;
        else return false;
        b/=10;
    }
    if (have.size()==10) return true;
    return false;
}
int main(){
    int i=13;
    while (1){//暴力找数字
        if (isfind(i)){
            cout<<i;
            break;
        }
        else i+=1;
    }
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值