![](https://iknow-base.cdn.bcebos.com/lxb/notice.png)
C++问题,不会啊,大神帮帮忙吧
1.神奇算式由4个不同的数字,组成的一个乘法算式,它们的乘积仍然由这4个数字组成。比如:210x6=12608x473=378427x81=2187都符合要求。如果满足乘...
1.神奇算式
由4个不同的数字,组成的一个乘法算式,它们的乘积仍然由这4个数字组成。
比如:
210 x 6 = 1260
8 x 473 = 3784
27 x 81 = 2187
都符合要求。
如果满足乘法交换律的算式算作同一种情况,那么,包含上边已列出的3种情况,一共有多少种满足要求的算式。
2.请将程序补充完整:
class A
{
int * a;
int n;
public:
A( int nn = 0) : n(nn)
{
if ( n == 0 ) a = NULL;
else a = (1) // 分配长度为n的动态数组
}
void Seta(int * aa) // 将aa的内容复制到成员变量a中
{ for (int i = 0; i < n; i++) (2) }
~A()
{ (3) } // 释放动态数组空间
}; 展开
由4个不同的数字,组成的一个乘法算式,它们的乘积仍然由这4个数字组成。
比如:
210 x 6 = 1260
8 x 473 = 3784
27 x 81 = 2187
都符合要求。
如果满足乘法交换律的算式算作同一种情况,那么,包含上边已列出的3种情况,一共有多少种满足要求的算式。
2.请将程序补充完整:
class A
{
int * a;
int n;
public:
A( int nn = 0) : n(nn)
{
if ( n == 0 ) a = NULL;
else a = (1) // 分配长度为n的动态数组
}
void Seta(int * aa) // 将aa的内容复制到成员变量a中
{ for (int i = 0; i < n; i++) (2) }
~A()
{ (3) } // 释放动态数组空间
}; 展开
展开全部
#include <iostream>
#include <cstring>
using namespace std;
int vis[10];
int bk[10];
int check(int x, int y) {
do {
if(vis[x % 10] == 0) {
return 0;
}
vis[x % 10]--;
} while(x /= 10);
do {
if(vis[y % 10] == 0) {
return 0;
}
vis[y % 10]--;
} while(y /= 10);
return 1;
}
int check4(int x) {
do {
if(vis[x % 10] != 0) {
return 0;
}
vis[x % 10]++;
} while(x /= 10);
return 1;
}
int main(void) {
int cnt = 0;
for(int i = 1023; i <= 9876; i++) {
memset(vis, 0, sizeof(vis));
if(!check4(i)) {
continue;
}
memcpy(bk, vis, sizeof(bk));
for(int j = 1; j <= 98; j++) {
memcpy(vis, bk, sizeof(bk));
if(i % j != 0) {
continue;
}
int k = i / j;
if(j > k) {
continue;
}
if(!check(j, k)) {
continue;
}
cout << j << " * " << k << " = " << i << endl;
cnt++;
}
}
cout << cnt << endl;
}
a = new int[n]
a[i] = aa[i]
delete[] a
追问
第2题呢
追答
没看见代码是2段吗
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询