第三问,大致意思是取奇数位的数相加,比如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;
}