同学们表演团体体操,排列的队形必须是长方形或正方形(且该长方形或者正方形的变长要求>1)。原来有m排,每排有n个人,现在想要变换队形,请问在人数不变的情况下,队形有多少种不同的变换方法。
如:原有3排,每排10个人。那么可以有2种变换队形,分别是2 * 15和5 * 6(15 * 2以及6 * 5算作重复的队形)。(4.1.101)
输入
两个整数m和n,分别代表有m排以及每排有n个人。(m <= n 且 m和n都满足<=9999999)
输出
一个整数,代表可以变换的队形的方案。
样例输入复制
3 10
样例输出复制
2
你这做复杂了吧,还双重循环。就是计算m*n的积,除了m*n外,还有几对因子组合就行了。如下面代码所示
int k = m*n;
int count = 0;
for(int i=2;i<=sqrt(k*1.0);i++)
{
if(k%i == 0)
{
if(i!= m && 1!=n)
k++;
}
}
#include<bits/stdc++.h>
using namespace std;
int main(){
int m,n,num=0;
cin>>n>>m;
for(int i=2;i<=sqrt(n*m);i++){
if(n*m%i==0&&i!=n&&i!=m){
num++;
cout<<i<<" "<<n*m/i<<endl;
}
}
cout<<num;
return 0;
}
我也不行,帮忙看看
#include<bits/stdc++.h>
using namespace std;
int main(){
int m,n,num=0;
cin>>n>>m;
for(int i=2;i<=sqrt(nm);i++){
if(nm%i==0&&i!=n&&i!=m){
num++;
cout<<i<<" "<<n*m/i<<endl;
}
}
cout<<num;
return 0;
}
你在oj上提交正确没有?
您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632
解决了,我在OJ号是“hpjy”,昵称“物无非彼,物无非是”排名九十多,再次感谢
#include<stdio.h>
#include <iostream>
using namespace std;
#include <string.h>
#include <math.h>
int main()
{
int i,j,x;
float y;
int a,b;
cin>>a>>b;
int sum=0;
for(i=1;i<a*b;i++)
{
for(j=1;j<a*b;j++)
{
x=i*j;
y=3*i+2*j+x/1;
if(x==a*b and i!=a and j!=b and j!=a and i<j){
sum++;
}
}
}
cout<<sum;
return 0;
}
自己写是对的,结果平台上写着时间超时,是有什么别的方法吗