背景
7.7刚考完试,成绩很不理想,测试之前觉得自己都可以AK,结果一共5道题,满分500分,只得300分,所以来写一个小结
正文
1、 求最大质子问题。
编一程序,输入正整数 N(N 在 2~2*10
9之间), 求它的最大质因子(包括它本身)。 输入文件:只有一行,就是正整数 N, 输出文件:只有一行,就是所求的最大质因子。 输入输出样例:
输入:7 输入:9
输出:7 输出:3
非常明显的水题,于是考试时只花3分钟写完此题,但是,到了考试要结束的时候,猛然发觉自己的解法有问题!!!
正解应该是:
把i从2枚举到sqrt(n),然后一个个的除,但是,关键一句话,应该要写while,我却这样写了:
if (n%i==0)
其实应该这样写
while (n%i)
于是,我还十分意外的得了60分,不得不说,数据是真的水
贴一波std
#include<iostream>
#include<cstdlib>
#include<cstdio>
#include<cmath>
using namespace std;
int n,n1,ans,i;
void chu()
{
while (!(n1%i)) {
n1=n1/i; ans=i;}
}
int main()
{
freopen("num.in","r",stdin);
freopen("num.out","w",stdout);
cin>>n; n1=n;
for (i=2;i<=sqrt(n);i++) chu();
cout<<max(ans,n1);
return 0;
}
2、 求数字的乘积根问题。
一个正整数的数字的乘积 N 的定义是:这个整数中非零数字的乘积。例如,整数 999 的数字乘积为 9
×9×9,即 729;729 的数字乘积为 7×2×9, 即 126;126 的数字乘积为 1×2×6,即 12;12 的数字乘
积为 1×2,即 2。一个正整数的数字乘积根 N 是这样得到的:反复取该整数的非零数字乘积, 直到得到
一位数字为止。例如,在上面的例子中数字的乘积根是 2。
编一个程序,输入一个正整数(长度不超过 200 位数字), 输出计算其数字乘积根的每一步结果。 输入文件:只有一行,就是正整数 N, 输出文件:若干行,就是 N 每一步乘积根的结果。 输入输出样例:
输入:7 输入:126
输出:7 输出:12
2
十分裸的高精乘低精,于是题还没读完的我,又开始飘了,所以,理所当然得,我漏掉了几句话(即加黑字),然后,这道题就没有悬念的爆零了
std:
#include<iostream>
#include<cstdlib>
#include<cstdio>
#include<cmath>
#include<cstring>
using namespace std;
int a[330],b[330];
char s[330];
int s1,k;
int main()
{
freopen(