华一7.7号水题赛小结

背景

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(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值