小学奥赛题(真的很一般)

 第三问,大致意思是取奇数位的数相加,比如456160,就是取4 6 6来计算,得到16。

C++实现方法如下:思路是

1.计算这个输入的数有多少位,比如456160就有6位

2.后从左往右开始计算,当遇到单数位,开始记录,利用除得到这一位的数,利用取余向后移位计算。

3.每次只累加单数位的数。

#include <iostream>
#include<math.h>

int main() {
    int num2=0;
    std::cin>>num2;
    int cnt2 = 0;
    int num_bit;
    int ans = 0;
    int num2_ = num2;  //copy the value of num2
    while(num2_>=1)
    {
        num2_ = num2_/10;
        cnt2++; //count digts
    }
    for(int i=cnt2;i>0;i--)
    {
        if(i%2==0)  //odd location
        {
            int a = std::pow(10,i-1);  //10^x
            num_bit = num2/a;          //calculate the numerals
            //std::cout<<num_bit<<std::endl;
            num_bit = num_bit%10;      //Discard the first (location) number
            //std::cout<<num_bit<<std::endl;
            ans = ans + num_bit;
        }
    }
    std::cout<<"num_count"<<cnt2<<std::endl;
    std::cout<<"3."<<ans<<std::endl;
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值