问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

简单ACM(C++)问题

发布网友 发布时间:2023-11-22 17:18

我来回答

3个回答

热心网友 时间:2024-12-06 11:44

12=2^2*3^1
12的因子数(2+1)*(1+1)=6个
思路如下:
程序初始化先求素数表
然后再开始要求用户输入数据,比如输入24,将其分解为24=2*2*2*2*3=2^3*3
2为3次方,3为1次方,则24的因子数为(3+1)*(1+1)=8种。
/****************代码如下*******************/
#include <iostream>
#include <math.h>
#define size 1024
using namespace std;

int pn[size];//存储1024个素数,应该够用了
int factor[size/4];//存储因子个数,统一初始化为0

void getPN(int* a,int n){
if(n<1)return;
int length=0;
a[length++]=2;
for(int i=3;i<n;i++){
bool nis=false;
for(int tt=0;a[tt]<=sqrt(i);tt++)if(i%a[tt]==0){
nis=true;
break;
}
if(nis==false){
a[length]=i;
length++;
}
}
}
void getFN(int number){
int pos=0;
for(int i=0;i<size&&number>1;i++){
factor[pos]=0;
bool is=false;
while(number%pn[i]==0){
factor[pos]+=1;
number/=pn[i];
is=true;
cout<<pn[i];
}
if(is==true){
pos++;
}
}
factor[pos]=0;
}
int main(){
getPN(pn,size);
int n;
int buf[size];
while(true){
cin>>n;
getFN(n);
int temp=1;
for(int i=0;factor[i]!=0;i++)temp*=factor[i]+1;
cout<<n<<":"<<temp<<endl;
};
return 0;
}

热心网友 时间:2024-12-06 11:45

我认为不必用到素数表,只用循环语句就行了。代码如下:
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
int i,n,count;
cout<<"input one number(input 0 to stop):"<<endl;
cin>>n;
while(n!=0)
{
count=0;
for(i=1;i<=sqrt(n);i++)
if(n%i==0)
count++;
cout<<n<<':'<<2*count<<endl;
cout<<"input next number:"<<endl;
cin>>n;
}
return 0;
}追问超时了16MS

追答之所以超时,是程序里面夹杂了输入,抛开输入的时间,程序并没有超时。以下是改进的代码:
#include
#include
#include
#include
using namespace std;
int main()
{
clock_t start,end;
int i,j,n,count;
vector data;
cout>n;
while(n!=0)
{
data.push_back(n);
cin>>n;
}
start=clock();
for(i=0;i<data.size();i++)
{
count=0;
for(j=1;j<=sqrt(data[i]);j++)
if(data[i]%j==0)
count++;
cout<<data[i]<<':'<<2*count<<endl;
}
end=clock();
cout<<"cost time:"<<double(end-start)/CLOCKS_PER_SEC<<endl;
return 0;
}
输入例子:

热心网友 时间:2024-12-06 11:45

printf不是C++的?追问恩,是C里面的,我们课本都不教的……

追答那你要搞ACM的话,最好用scanf 和printf 这两个函数比 cin 和cout 快

参考资料:http://zhidao.baidu.com/question/261136628.html

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
有释放证明书可以开无犯罪证明吗 刑满释放人员入党需要公安机关出具怎样证明与无罪证明一样的作用 交通事故私了是要注意哪些问题 【私了注意事项】车祸哪些情况不能私了 交通事故私了要注意什么 私了交通事故要注意的问题 wifi6跟wifi5的区别有什么? 只有吉祥寺是想住的街道吗 演员表 《吉祥寺真的是你想住的街道吗》:每个人都会找到适合自己的街道 日剧《只有吉祥寺是想住的街道吗》为何选择“生きていたん 如何评价日剧《只有吉祥寺是想住的街道吗?》? 深圳华运国际物流公司怎么样?,但是听说很压榨员工,工作过的人...5 华运国际物流公司怎么样?现在从事一份货运代理的销售工作好做吗...6 ...翻译成英文……罗斯福说,&quot;昨日是历史。而明天仍是个谜。今天是... 环球真的有额度吗 环球能透支多少钱435 ...is a mystery。but today is a gift。翻译。 卧倒油罐内油体积怎么算?实际数是直径4米,长9米,油高度2米.谁能帮忙... 56网站视频怎么下载18 如何登录56视频21 怎么申请第二个138 本身就在家,可朋友却问过年回家吗? 武汉哪里可以学服装裁剪,学服装打版 &quot;裁剪有前途吗7 我想学习做衣服和剪裁,去哪里学习比较好11 边塞是什么意思26 戍边是什么意思?3 独居老奶奶因孤独报假警,该如何关心这些空巢老人? 电脑桌面图标过多对电脑都有什么影响? 为什么中原证券集成版这个软件我这又是能登上,有时显示应用程序错误... 桂林附大妇产医院顺产生孩子做四维彩超多少钱啊5 哈尔滨医科大学附属第一医院能做四维彩超吗。10 小孩肚子被重物压住了,怎么知道有没有影响?1 壹食一焖锅饭加盟怎么样?1 56网站视频怎么下载18 阅读与感悟 盲人提灯笼 怎样能找到以前在网上看的视频?56网的,谢谢了。1 为什么以前在56.com视频网制作的视频全都没了,里面还有很...593 为什么我56视频网站里面,以前上传的视频现在全部都没有了?27 56视频网站免费注册26 云顶之弈美测服一天只能得3000点券吗? 求一日本MV的名字 ...is history tomorrow is mystery and today is agift是什么意思... 泛域名和泛目录是什么意思6 做泛目录,模板的文章代码怎么写,让文章排版好看? 泛目录站群程序 泛目录程序破解 泛目录怎么做 泛目录程序ph...1 狗狗的4个尖牙齿叫什么齿7 狗狗一般有几个比较尖的牙齿?5 狗狗你上下四棵尖牙呀什么名字2 四个月大的金毛狗狗换的牙有一个尖尖的是什么牙? 零食很忙要怎样加盟的?111 数控车床大托盘(床鞍)在Z轴移动时左右摆动是怎么回事?知道的...5 车床上工件位子调整是利用了什么传动