- 浏览: 34135 次
-
最新评论
#include<iostream>
#include<math.h>
using namespace std;
struct stuOneF
{
int nFact;
int nPow;
};
struct stuAllFs
{
int nFact[50];
int nPow[50];
int nCount;
};
stuAllFs stuGetAll(int nInN);
void vOutput(stuAllFs stuAns);
stuOneF stuGetOne(int & nInN,int nDiv);
int main()
{
int nCase;
int i;
stuAllFs stuAns;
int nInNum;
cin >> nCase;
for(i=1;i<=nCase;i++)
{
cin >> nInNum;
stuAns=stuGetAll(nInNum);
vOutput(stuAns);
}
return 0;
}
stuAllFs stuGetAll(int nInN)
{
stuAllFs stuRet;
stuOneF stuAl;
int i,j;
int nUpto;
if(nInN<1)
{
stuRet.nCount=0;
return stuRet;
}
i=2;
j=0;
nUpto=(int)(sqrt(nInN*1.0));
while(i<=nUpto)
{
stuAl=stuGetOne(nInN,i);
if(stuAl.nPow>0)
{
stuRet.nFact[j]=stuAl.nFact;
stuRet.nPow[j]=stuAl.nPow;
j++;
nUpto=(int)(sqrt(nInN*1.0));
}
i++;
}
stuOneF stuGetOne(int & nInN,int nDiv);
if(nInN>1)
{
stuRet.nFact[j]=nInN;
stuRet.nPow[j]=1;
j++;
}
stuRet.nCount=j;
return stuRet;
}
void vOutput(stuAllFs stuAns)
{
int i;
int nAns=1;
for(i=1;i<=stuAns.nCount;i++)
{
nAns*=2*stuAns.nPow[i-1]+1;
}
cout << nAns << endl;
}
stuOneF stuGetOne(int & nInN,int nDiv)
{
stuOneF stuRet;
stuRet.nFact=nDiv;
stuRet.nPow=0;
while(nInN%nDiv==0)
{
nInN/=nDiv;
stuRet.nPow++;
}
return stuRet;
}
#include<stdio.h>
#include<math.h>
struct stuOne
{
int nNum;
int nPow;
};
struct stuAll
{
int nNum[50];
int nPow[50];
int nCount;
};
void vOutPut(struct stuAll stu)
{
int i;
int nPlus=1;
for(i=1;i<=stu.nCount;i++)
{
nPlus*=2*stu.nPow[i-1]+1;
}
printf("%d\n",nPlus);
}
stuOne stuGetOne(int &num,int i)
{
struct stuOne stuRet;
stuRet.nNum=i;
stuRet.nPow=0;
while(num%i==0)
{
num/=i;
stuRet.nPow++;
}
return stuRet;
}
stuAll getAll(int num)
{
struct stuAll stuRet;
struct stuOne stu0;
int i,j;
int endLine;
if(num<1)
{
stuRet.nCount=0;
return stuRet;
}
i=2;
j=0;
endLine=(int)sqrt(num*1.0);
while(i<=endLine)
{
stu0=stuGetOne(num,i);
if(stu0.nPow>0)
{
stuRet.nNum[j]=stu0.nNum;
stuRet.nPow[j]=stu0.nPow;
j++;
endLine=(int)sqrt(num*1.0);
}
i++;
}
stuOne stuGetOne(int &num,int i);
if(num>1)
{
stuRet.nNum[j]=num;
stuRet.nPow[j]=1;
j++;
}
stuRet.nCount=j;
return stuRet;
}
int main()
{
int n,i;
int num;
struct stuAll stu;
while(scanf("%d",&n)!=EOF)
{
for(i=1;i<=n;i++)
{
scanf("%d",&num);
stu=getAll(num);
vOutPut(stu);
}
}
return 0;
}
下面的程序是自己写的,今天终于搞定了,想想其实挺简单的,有了思路然后再一步步去实现,其中纠结了很久的一段代码原来是判断最后一个数字的,今天终于想通了。
感谢自己的坚持!
#include<math.h>
using namespace std;
struct stuOneF
{
int nFact;
int nPow;
};
struct stuAllFs
{
int nFact[50];
int nPow[50];
int nCount;
};
stuAllFs stuGetAll(int nInN);
void vOutput(stuAllFs stuAns);
stuOneF stuGetOne(int & nInN,int nDiv);
int main()
{
int nCase;
int i;
stuAllFs stuAns;
int nInNum;
cin >> nCase;
for(i=1;i<=nCase;i++)
{
cin >> nInNum;
stuAns=stuGetAll(nInNum);
vOutput(stuAns);
}
return 0;
}
stuAllFs stuGetAll(int nInN)
{
stuAllFs stuRet;
stuOneF stuAl;
int i,j;
int nUpto;
if(nInN<1)
{
stuRet.nCount=0;
return stuRet;
}
i=2;
j=0;
nUpto=(int)(sqrt(nInN*1.0));
while(i<=nUpto)
{
stuAl=stuGetOne(nInN,i);
if(stuAl.nPow>0)
{
stuRet.nFact[j]=stuAl.nFact;
stuRet.nPow[j]=stuAl.nPow;
j++;
nUpto=(int)(sqrt(nInN*1.0));
}
i++;
}
stuOneF stuGetOne(int & nInN,int nDiv);
if(nInN>1)
{
stuRet.nFact[j]=nInN;
stuRet.nPow[j]=1;
j++;
}
stuRet.nCount=j;
return stuRet;
}
void vOutput(stuAllFs stuAns)
{
int i;
int nAns=1;
for(i=1;i<=stuAns.nCount;i++)
{
nAns*=2*stuAns.nPow[i-1]+1;
}
cout << nAns << endl;
}
stuOneF stuGetOne(int & nInN,int nDiv)
{
stuOneF stuRet;
stuRet.nFact=nDiv;
stuRet.nPow=0;
while(nInN%nDiv==0)
{
nInN/=nDiv;
stuRet.nPow++;
}
return stuRet;
}
#include<stdio.h>
#include<math.h>
struct stuOne
{
int nNum;
int nPow;
};
struct stuAll
{
int nNum[50];
int nPow[50];
int nCount;
};
void vOutPut(struct stuAll stu)
{
int i;
int nPlus=1;
for(i=1;i<=stu.nCount;i++)
{
nPlus*=2*stu.nPow[i-1]+1;
}
printf("%d\n",nPlus);
}
stuOne stuGetOne(int &num,int i)
{
struct stuOne stuRet;
stuRet.nNum=i;
stuRet.nPow=0;
while(num%i==0)
{
num/=i;
stuRet.nPow++;
}
return stuRet;
}
stuAll getAll(int num)
{
struct stuAll stuRet;
struct stuOne stu0;
int i,j;
int endLine;
if(num<1)
{
stuRet.nCount=0;
return stuRet;
}
i=2;
j=0;
endLine=(int)sqrt(num*1.0);
while(i<=endLine)
{
stu0=stuGetOne(num,i);
if(stu0.nPow>0)
{
stuRet.nNum[j]=stu0.nNum;
stuRet.nPow[j]=stu0.nPow;
j++;
endLine=(int)sqrt(num*1.0);
}
i++;
}
stuOne stuGetOne(int &num,int i);
if(num>1)
{
stuRet.nNum[j]=num;
stuRet.nPow[j]=1;
j++;
}
stuRet.nCount=j;
return stuRet;
}
int main()
{
int n,i;
int num;
struct stuAll stu;
while(scanf("%d",&n)!=EOF)
{
for(i=1;i<=n;i++)
{
scanf("%d",&num);
stu=getAll(num);
vOutPut(stu);
}
}
return 0;
}
下面的程序是自己写的,今天终于搞定了,想想其实挺简单的,有了思路然后再一步步去实现,其中纠结了很久的一段代码原来是判断最后一个数字的,今天终于想通了。

感谢自己的坚持!
发表评论
-
最大子段和
2012-01-05 13:59 794给出N个数字, 计算出最大的子段和。 Input 第一行给 ... -
最长不下降子序列长度
2012-01-05 13:55 1356对于序列(1, 7, 3, 5, 9, 4,,有它的一些不下降 ... -
求两字符串匹配的最长子序列
2012-01-05 13:52 1032如果两种特征序列的公共子序列越长表示越接近,现在请你帮助计算出 ... -
编辑距离问题
2012-01-05 13:48 681#include<iostream> #incl ... -
Kruskal最小生成树
2011-12-08 14:26 718#include<iostream> #inclu ... -
prime
2011-12-01 20:09 626#include<iostream> using ... -
哈弗曼编码
2011-11-28 10:43 1#include<iostream> #defi ... -
哈弗曼编码
2011-11-28 10:42 556#include<iostream> #defi ... -
#贪心算法(零件加工)
2011-10-27 13:25 1012#include<stdio.h> #includ ... -
众数问题
2011-10-20 14:57 812#include <stdio.h> #inclu ... -
输油管道问题
2011-10-13 14:45 628#include <stdio.h> #inclu ... -
幂的精确求值
2011-09-22 15:07 477#include<iostream> using ... -
大数加法
2011-09-22 12:56 638#include<iostream> #incl ... -
最大子段和问题(分治)(##)
2011-09-08 21:31 678#include<stdio.h> #defin ... -
最大子段和问题(O(N^2))
2011-09-08 15:04 625#include<stdio.h> int a[ ... -
最大子段和问题(O(N^3))
2011-09-08 14:45 499#include<stdio.h> int a[ ...
相关推荐
根据新课标,能自动出题,供老师、家长使用。
小学三年级数学计算题自动出题器1.01 出计算题是一件麻烦事 有了这个出题器 一点就搞定!
《Delphi7编程实现小学三年级口算出题系统》 Delphi7是一款历史悠久但依然具有强大功能的集成开发环境(IDE),它以其高效的编译器和面向对象的 Pascal 语言深受程序员喜爱。在这个项目中,我们关注的是一个利用 ...
本文将深入探讨“易语言三种判断之出题器源码”及其相关知识点,主要关注“易语言算术出题器源码”,以及如何通过这个工具帮助用户学习编程。 首先,我们要理解易语言的语法结构。易语言的核心理念是“易学易用”,...
这是一款在QT平台开发的,简易的自动出题软件。 主要包含一个主界面提供算法的选择,选择后跳转到对应的窗口进行练习,练习完毕后点击评分按钮统计总题数、对的题数、错的题数。 主要功能有加法运算、减法运算、乘法...
随想出题是一款专为教育领域设计的软件,其免费版提供了基础的试题生成与管理功能,旨在帮助教师和学生更便捷地进行教学活动。这款软件的核心特点是简单易用,功能实用,尤其适合家庭学习和课堂教学环境。 1. **...
口算伴我成长系列口算出题软件简介 以EXCEL自行编制的系列自动出题软件,主要适用于小学低年级学生练习口算使用。 随着孩子学习的深入,以及和家长们的交流,发现对口算的需求将是个长期的艰巨任务。故将编写的口算...
《日语三级出题基准2007》是针对日语学习者的一项重要参考资料,尤其对于准备参加日本语能力测试N3级别的考生来说,它提供了详细的考试标准和学习指南。这个压缩包文件包含了该级别考试的主要组成部分:语法、词汇和...
昨天晚上老师布置家庭作业,让家长出口算题100道给孩子练习乘法口诀,绞尽脑汁没想出来。 在朋友处找了个自动出题器,分享给大家,没事给熊孩子找点事情干,省得天天抢我手机!!
### 试卷自动出题系统知识点解析 #### 一、系统概述 **试卷自动出题系统**是...综上所述,试卷自动出题系统通过巧妙的设计和技术应用,实现了高效、便捷、安全的在线考试解决方案,是现代教育技术发展的重要成果之一。
通过智能化的出题机制和便捷的打印功能,这款软件能够有效提高学生口算能力,激发他们的学习兴趣,为他们的数学学习之路打下坚实的基础。在压缩包中的"kousuan.exe"文件,就是这个出题器的执行程序,只需运行即可...
棒棒糖小学数学出题器是一款功能强大、全面,简单易用的数学口算出题软件,傻瓜式操作,无需复杂设置,非常适合家长和老师给学生出题用。软件开发过程中充分结合了教科书中的教学内容,由浅至深,不放过每一个细节。...
3. **三位数随机出题.xlsx**:当孩子们对一位数和二位数的运算得心应手后,三位数的题目开始引入,进一步挑战他们的计算能力和心算技巧。通过解决这些题目,孩子们可以掌握更高层次的珠心算技能。 4. **四位数随机...
小学数学口算题出题助手
数学计算出题器主要是针对幼儿园、小学数学打造的一款出题软件,从10以内到100以内的加减乘除都可以进行出题,操作简答,生成的试卷可以直接进行打印,需要的朋友快来下载吧 数学计算出题器使用方法 选择题目难度...
易捷自动出题系统是一款考试考前辅助背记助手软件。可以自动从已编辑好的题库中随机抽取题目(本软件会从抽取的题库中随机不重复出题每道题1次,可选题库或自己标注的错题),并可查看答案、自己写备注和错误标记...
例如,生成的两个加数之和是否在合理范围内,一道减法题的被减数是否大于减数等。这需要使用到易语言的条件判断语句,如`如果...那么...否则...`。 5. **生成公式**:试题中的计算公式需要动态生成,易语言支持字符...
"一站到底出题系统"是一款专为企业培训设计的软件工具,旨在提高培训效率和质量,帮助组织者快速、高效地创建各类试题,适用于各种知识竞赛、员工考核或教育训练场景。这款系统可能包含了丰富的题库资源,支持多种...
小学算术出题软件每次出题100道加减乘除都可以出题有问题可以联系woyson@qq.com
可以解决所有的数独题目,能够出题,每次出的题都不相同