腾讯2010校园招聘笔试题(软件测试类)的附加题

题目:

10000以内求出满足以下要求的数。

            给出一个数,其个十百千位上的数两两相乘再相加(如1400的和几位4),其和能够被原数整除。将其原数翻转为新数(1400的新数是41),求出最大新数,并求其原数。

注:这个题目是很早之前写的,可能有点乱微笑

 

 #include <stdio.h>
#include <math.h>
#include <string.h>

void main()
{
int max=0;
int i;
int a[4];              //a[0]-a[3]分别保存个位、十位、百位、千位的数字
for (i=0;i<4;i++)
a[i]=0; //数字a元素初始化为0
int n;
for (n=101;n<10000;n++)
{
int sum=0;
int m=0;
int tmp=n;         
i=0;
while (tmp)
{
a[i]=tmp%10;
tmp=tmp/10;
i++;
}
sum=a[0]*a[1]+a[0]*a[2]+a[0]*a[3]+a[1]*a[2]+a[1]*a[3]+a[2]*a[3]; //sum保存个十百千位上的数两两相乘再相加的和
if (sum!=0 && n%sum==0) //判断sum!=0且n能否被sum整除
{
m=a[0]*1000+a[1]*100+a[2]*10+a[3];//原数反转为新数
printf("%d,",n);//可以输出满足条件的新数或原数以便查看
}
if (m>max)
max=m;//max用于存储最大的新数
}


i=0;
int mx=max;
while (mx)
{
a[i]=mx%10;
mx=mx/10;
i++;
}
n=a[0]*1000+a[1]*100+a[2]*10+a[3];//由最大的新数max求其原数,也就是将新数翻转为原数
printf("\n");
printf("n=%d;max=%d\n",n,max);
}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值