第三届全国软件专业人才设计与创业大赛选拔赛竞赛样题答案

样题 地址:

http://www.miit-nstc.org/Article/ShowArticle.asp?ArticleID=90

以下是自己做的答案,答案可能不唯一。


乘法算式

下列乘法算式中:每个汉字代表1个数字(1~9)。相同的汉字代表相同的数字,不同的汉字代表不同的数字。

 

    赛软件 比赛  =  软件比拼

 

试编程确定使得整个算式成立的数字组合,如有多种情况,请给出所有可能的答案。

 

【参考结果】

465 * 14 = 6510

my answer:

这个题题目有问题,根据参考答案,数字应该是0~9

#include<iostream>
using namespace std;
int main(){
int a,b,c,d,e;
int A,B,C;  
for(a=0;a<10;++a){
for(b=0;b<10;b++){
for(c=0;c<10;++c){
for(d=0;d<10;++d){
for(e=0;e<10;e++){
A=a+b*10+c*100;
B=c+d*10;
C=e+d*10+a*100+b*1000;
if(A*B==C)
cout<<A<<"*"<<B<<"="<<C<<endl;
}
}
}
}
}
return 0;
}


编译链接之后:发现只有465 * 14 = 6510

一个结果符合条件。



信用卡号验证

当你输入信用卡号码的时候,有没有担心输错了而造成损失呢?其实可以不必这么担心,因为并不是一个随便的信用卡号码都是合法的,它必须通过Luhn算法来验证通过。

该校验的过程:

1、从卡号最后一位数字开始,逆向将奇数位(135等等)相加。

2、从卡号最后一位数字开始,逆向将偶数位数字,先乘以2(如果乘积为两位数,则将其减去9),再求和。

3、将奇数位总和加上偶数位总和,结果应该可以被10整除。

例如,卡号是:5432123456788881

则奇数、偶数位(用红色标出)分布:5432123456788881

奇数位和=35

偶数位乘以2(有些要减去9)的结果:1 6 2 6 1 5 7 7,求和=35

最后35+35=70 可以被10整除,认定校验通过。

 

请编写一个程序,从标准输入获得卡号,然后判断是否校验通过。通过显示:“成功”,否则显示“失败”。

比如,用户输入:356827027232780

程序输出:成功

 

【程序测试参考用例】

356406010024817     成功

358973017867744     成功

356827027232781     失败

306406010024817     失败

358973017867754     失败


#include<iostream>
using namespace std;
int main(){
cout<<"input a series of numbers"<<endl;
int a[16];
int i=0,sum1=0,sum2=0,sum=0;
char n;
while(cin>>n){
a[i]=n;
++i;
}
int cont=i;
if(i%2==0){  //如果输入的个数是偶数 
   for(;i>=1;--i){
   	 //计算奇数位的和
sum1+=a[--i];    
   	}
   	i=cont-1;
   	for(;i>0;--i){
   	//计算偶数项
   if(2*a[--i]>9)
   a[i]-=9; 
   sum2+=a[i];
   }   
}
if(i%2==0){  //如果输入的个数是奇数
 i=cont;
   for(;i>0;--i){
   	 //计算奇数位的和
sum1+=a[--i] ;   
   	}
   	i=cont-1;
   	for(;i>0;--i){
   	//计算偶数项
   if(2*a[--i]>9)
   a[i]-=9; 
   sum2+=a[i];
   }   
}
sum=sum1+sum2;
if(sum%10==0)
cout<<"成功"<<endl;
else
cout<<"失败"<<endl;
return 0;
}


不知道为什,

356827027232781     失败

306406010024817     失败

358973017867754     失败

但是我这些成功了


有趣的平方数

625这个数字很特别,625的平方等于390625,刚好其末3位是625本身。除了625,还有其它的3位数有这个特征吗?还有一个!该数是:_____________

 

【参考答案】

376


#include<iostream>
using namespace std;
int main(){
for(int a=100;a<1000;a++){
   long b=a*a;
   int c=b/1000;
   b=b-c*1000;
   if(b==a)
   cout<<b<<endl;
}
}


最后输出

376

625

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值