试题 A: 平方和
想水一水,明年蓝桥杯一波,exercising,练习题,虽然
python
比较熟练,但觉得这种东西还是c++
舒服
一、问题描述
小明对数位中含有 2
、0
、1
、9
的数字很感兴趣,在1
到40
中这样的数包括1
、2
、9
、10
至32
、39
和40
,共28
个,他们的和是574
,平方和
是14362
。
注意,平方和是指将每个数分别平方后求和
。
请问,在1
到2019
中,所有这样的数的平方和
是多少?
二、答案提交
这是一道结果填空
的题,你只需要算出结果后提交即可。本题的结果为一个整数
,在提交答案时只填写这个整数,填写多余的内容将无法得分。
提示:如果你编写程序计算,发现结果是负的,请仔细检查自己的程序,不要怀疑考场的编程软件。
三、运行结果
The total number:1761
The sum of number:1905111
The square of total:2658417853
四、源代码
#include<iostream>
#include<string.h>
#define MAX 6 //位数
#define MAX1 2020 //num1[]数组的容量
using namespace std;
int main(void){
int a,i,j,k,length,length1=0,flag,sum=0;
long long total=0;//int型变负,double型科学计数法表示
int num[MAX],num1[MAX1];
for(i=1;i<=2019;i++){
a=i;length=0;
flag=0;
for(j=0;j<MAX;j++){
if(a==0) break;
else{
num[j]=a%10;//分别得到各位的数字,判断是否有2,0,1,9
a=a/10;
length++;
}
}
//length=sizeof(num)/sizeof(num[0]);
for(k=0;k<length;k++){
/*if(k==length-1){
* cout<<num[k]<<endl;
*}
*else{
* cout<<num[k]<<" ";
*}
*///输出所有的数(包括不满足条件)
if(num[k]==2 || num[k]==0 || num[k]==1 || num[k]==9){
flag=1;
}
}
if(flag==1){
num1[length1]=i;//满足条件的数字
length1++;
}
memset(num,0x0,MAX*sizeof(int));//num[]数组清空
//num[0]='\0';
}
cout<<"The total number:"<<length1<<endl;
for(k=0;k<length1;k++){
sum+=num1[k];
total+=num1[k]*num1[k];
// cout<<num1[k]<<endl;输出符合的数字
}
cout<<"The sum of number:"<<sum<<endl;
cout<<"The square of total:"<<total<<endl;
return 0;
}
sum<<endl;
cout<<"The square of total:"<<total<<endl;
return 0;
}