关于网友提出的“ 小学数学老师想用编程来做这道题不会做”问题疑问,本网通过在网上对“ 小学数学老师想用编程来做这道题不会做”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:
问题: 小学数学老师想用编程来做这道题不会做
描述: 我想做这样一道数学题一个三位数乘一个两位数,结果是一个四位数,上面用到的9个数字是各不相同的,但必须是1~9这9个数,请问这个三位数是几?两位数是几,我想用编的方法来解答这个题.
本人是一名小学教师,水平有限,还望高手写出源代码.
解决方案1: 忘了把0除去 再发一遍
#include
#include
using namespace std;
int judgebit(int n)//判断一个数的位数
{
if(n<10) return 1;
else return judgebit(n/10)+1;
}
int buffer[10];
int judgediffer(int num)//判断该数是否含0或相同数字
{
int k=0;
for(int i=num;i;i/=10)
{
for(int j=0;j<>
{
if(buffer[j]==i%10)
return 0;
}
if(i%10==0)
return 0;
buffer[k++]=i%10;
}
return 1;
}
int arr1[2];int arr2[3];int arr3[4];int arr[9];int s;
int judgetwo(int a,int b)//判断两个数与乘积中是否有相同的数
{
if(judgebit(a*b)!=4) return 0;
if(!judgediffer(a)) return 0;
if(!judgediffer(b)) return 0;
if(!judgediffer(a*b)) return 0;
s=a*b;
for(int i=0;i<2;i++,a/=10)
{
arr1[i]=a%10;
}
for(int j=0;j<3;j++,b/=10)
{
arr2[j]=b%10;
}
for(int t=0;t<4;t++,s/=10)
{
arr3[t]=s%10;
}
int m=0;
for(i=0;i<2;i++)
arr[m++]=arr1[i];
for(i=0;i<3;i++)
arr[m++]=arr2[i];
for(i=0;i<4;i++)
arr[m++]=arr3[i];
for(i=0;i<>
for(j=i+1;j<>
{
if(arr[i]==arr[j])
return 0;
}
return 1;
}
void main()
{
for(int i=10;i<=99;i++)
{
for(int j=100;j<=999;j++)
{
if(judgetwo(i,j))
{
cout<<><><>
cout<<>
}
}
}
}
解决方案2: #include
#include
#include
int main(int argc, _TCHAR* argv[])
{
std::vector numbers;
numbers.push_back(1);
numbers.push_back(2);
numbers.push_back(3);
numbers.push_back(4);
numbers.push_back(5);
numbers.push_back(6);
numbers.push_back(7);
numbers.push_back(8);
numbers.push_back(9);
do
{
int muler3 = numbers[0] * 100 + numbers[1] * 10 + numbers[2];
int muler2 = numbers[3] * 10 + numbers[4];
int amass = numbers[5] * 1000 + numbers[6] * 100 + numbers[7] * 10 + numbers[8];
if(muler3 * muler2 == amass)
{
std::cout<<><><><>
}
} while(std::next_permutation(numbers.begin(), numbers.end()));
return 0;
}
以上介绍了“ 小学数学老师想用编程来做这道题不会做”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/3010291.html