【P1203】买花

我先在已经弱到连高精乘单精都能写错的地步了QAQ

原题:

求一个小于等于N的数M,使得phi(M)/M最小,
其中phi(M)是与M互质且比M小的数的个数。
例如phi(4)=2,因为1,3和4互质。

N<=10^40

先推欧拉函数打表,发现答案一定是乘积<=m的前k个质数的乘积(比如50的答案就是2*3*5<=50)

然后就是高精水体

然而我写了2h QAQ,果然实力是会随着时间的推移降低的QAQ

主要错误就是关于乘出来结果的长度的问题,这个长度要在a[i]>=10往后推得时候变推边更新,不能先全部算完了再更新,因为推完后可能会因为%=10而出现中间有0的情况,这时候推长度推到这里就断了,但是边推边更新就不会出现这种情况,因为还没%=10,不会==0

我好弱啊QAQ

代码:

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<algorithm>
 4 #include<cstring>
 5 #include<cmath>
 6 using namespace std;
 7 void read_big(int *x,int &lx){lx=0;  char ch=getchar();
 8     while(ch<‘0‘||ch>‘9‘)  ch=getchar();
 9     while(ch>=‘0‘&&ch<=‘9‘){  x[++lx]=ch-‘0‘;  ch=getchar();}
10 }
11 int n[110],ln;
12 int a[110],la,b[110],lb,c[110];
13 bool kang[1100000];  int zhi[1100000],ztop=0;
14 void shai(){
15     memset(kang,0,sizeof(kang));
16     for(int i=2;i<=1000000;i++)if(!kang[i]){
17         zhi[++ztop]=i;
18         int temp=1;  while(i*(temp+1)<=1000000)  kang[i*(++temp)]=true;
19     }
20 }
21 bool bi(int *x,int lx,int *y,int ly){
22     if(lx!=ly)  return (lx>ly);
23     for(int i=lx;i>=1;i--)if(x[i]!=y[i])  return (x[i]>y[i]);
24     return false;
25 }
26 void cheng(int *x,int &lx,int y){
27     for(int i=1;i<=lx;i++)  x[i]*=y;
28     for(int i=1;i<=lx;i++)  x[i+1]+=x[i]/10,x[i]%=10;
29     for(;a[lx+1];lx++)  x[lx]+=x[lx]/10,x[lx]%=10;
30 }
31 int main(){//freopen("ddd.in","r",stdin);
32     shai();
33     read_big(c,ln);
34     for(int i=ln;i>=1;i--)  n[i]=c[ln-i+1];
35     a[la=1]=1;
36     for(int i=1;i<=10000;i++){
37         lb=la;
38         for(int j=1;j<=lb;j++)  b[j]=a[j];
39         cheng(a,la,zhi[i]);
40         if(bi(a,la,n,ln)){  for(int j=lb;j>=1;j--)cout<<b[j];  cout<<endl;  return 0;}
41     }
42     return 0;
43 }

时间: 2024-08-08 22:06:33

【P1203】买花的相关文章

洛谷 P1203 [USACO1.1]坏掉的项链Broken Necklace

P1203 [USACO1.1]坏掉的项链Broken Necklace 题目描述 你有一条由N个红色的,白色的,或蓝色的珠子组成的项链(3<=N<=350),珠子是随意安排的. 这里是 n=29 的二个例子: 第一和第二个珠子在图片中已经被作记号. 图片 A 中的项链可以用下面的字符串表示: brbrrrbbbrrrrrbrrbbrbbbbrrrrb 假如你要在一些点打破项链,展开成一条直线,然后从一端开始收集同颜色的珠子直到你遇到一个不同的颜色珠子,在另一端做同样的事(颜色可能与在这之前收

P1203 [USACO1.1]坏掉的项链Broken Necklace

P1203 [USACO1.1]坏掉的项链Broken Necklace 题目描述 你有一条由N个红色的,白色的,或蓝色的珠子组成的项链(3<=N<=350),珠子是随意安排的. 这里是 n=29 的二个例子: 第一和第二个珠子在图片中已经被作记号. 图片 A 中的项链可以用下面的字符串表示: brbrrrbbbrrrrrbrrbbrbbbbrrrrb 假如你要在一些点打破项链,展开成一条直线,然后从一端开始收集同颜色的珠子直到你遇到一个不同的颜色珠子,在另一端做同样的事(颜色可能与在这之前收

AC日记——[USACO1.1]坏掉的项链Broken Necklace 洛谷 P1203

题目描述 你有一条由N个红色的,白色的,或蓝色的珠子组成的项链(3<=N<=350),珠子是随意安排的. 这里是 n=29 的二个例子: 第一和第二个珠子在图片中已经被作记号. 图片 A 中的项链可以用下面的字符串表示: brbrrrbbbrrrrrbrrbbrbbbbrrrrb 假如你要在一些点打破项链,展开成一条直线,然后从一端开始收集同颜色的珠子直到你遇到一个不同的颜色珠子,在另一端做同样的事(颜色可能与在这之前收集的不同). 确定应该在哪里打破项链来收集到最大数目的珠子. 例如,在图片

题解 P1203 【[USACO1.1]坏掉的项链Broken Necklace】

[USACO1.1]坏掉的项链Broken Necklace 22892 破碎的项链 方法一:很容易想到枚举断点,再分别两头找,但是要注意很多细节 #include<iostream> #include<string> #include<cstdio> using namespace std; string s; int n,l,r,ll,rr,tmp,ans; inline int calc(int x) { ll=s[x],rr=s[x+1],l=x-1,r=x+2

0505--鲜花售卖网之“NABCD模型”

一.NABCD 1) N (Need 需求)--(分析人:梁植淋) --简介 我们的鲜花售卖系统主要是给需要买花或者是养花的顾客提供一个购花平台,买花时通过位置识别给用户提供附近的花店购花,花店接到订单后可在短时间内派出送花员把花送到顾客手上. --顾客烦恼 如今人们买花的方式主要有两种,一种是在淘宝等购物平台买,还有一种就是直接去花店买,但这两种买花方式往往会给顾客们带来一些烦恼. 先说去实体花店买花顾客的烦恼,顾客们往往没有太多的时间去花店挑选花品,甚至有一些地方实体花店并不常见,如我们学校

幸福的方法

第一章关于幸福的疑问 “我是否幸福”这个问题本身就暗示着对幸福的两极看法:要么幸福,要么不幸福.在这种理解中,幸福成为一个终点,一旦达到,我们对幸福的追求就结束了.实际上这个重点并不存在,对这一误解的执着职能导致不满和挫败感. 养成习惯:与其强化自律性,不如养成固定的习惯.养成习惯要求确定行动的细节,并规定在特定的具体时间内完成,这需要感受到深刻价值作为行事动机.如果我们不把一些活动变为习惯或规律,结果往往不是自然而为,而是让我们被动地生活.在有规划.有规律的生活中,我们可以妥善地安排时间,为更

《Qt on Android核心编程》介绍

<Qt on Android核心编程>终于尘埃落定,付梓印刷了. 封面 看看封面的效果吧,历经几版,最终就成了这个样子. 看下封皮: 这是立体版效果: 章节内容简介 第 1 章 欢迎来到Qt的世界,让我们看看Qt是什么,能给我们带来什么,又有谁在使用Qt.我们要约会的Qt on Android,它缘起何处,有着怎样曲折婉转的历史,如今的小模样能否让我们爱之如狂-- 第 2 章 当你遇见了合适的人,开始筹划第一次约会,又是兴奋又是惆怅,要不要买花,去哪里买礼物,穿什么衣服,洒什么香水,带什么应对

云技术,智能家居与嵌入式——前景好的产业

第一章 云计算技术及在日常生活中的应用 1.1  三大应用 1.1.1 云物联 物联网 顾名思义,"物联网就是物物相连的互联网".这有两层意思:第一,物联网的核心和基础仍然是互联网,是在互联网基础上的延伸和扩展的网络:第二,其用户端延伸和扩展到了任何物品与物品之间,进行信息交换和通信. 物联网的两种业务模式: (1)MAI(M2M Application Integration), 内部MaaS: (2)MaaS(M2M As A Service), MMO, Multi-Tenant

有意思的笔试题记录与分析

昨天参加了某公司的笔试,总的来说题目很简单.但是还是有几个个题目是很有意思的,拿来和大家分享下! 1.小周带着他的鸵鸟穿越1000公里的沙漠,运送3000颗白菜.已知鸵鸟一次性可驼1000颗白菜,但每走1公里又要吃掉1棵白菜,问:小周最终可以运多少颗白菜? 分析:记得以前算法设计书上有个类似的油车过沙漠的问题,当时这问题是用倒推法来解决的,因为它有个结题突破口:油车以最少的耗油量穿过沙漠.本题同是过沙漠问题,但是却没有像油车过沙漠的解题突破口,怎么办呢?我们先想一个极限:让小周直接带着1000颗