3.18二刷基础119、124,完成进阶52
题目幸运数是波兰数学家乌拉姆命名的。它采用与生成素数类似的“筛法”生成。首先从1开始写出自然数1,2,3,4,5,6,....1 就是第一个幸运数。我们从2这个数开始。把所有序号能被2整除的项删除变为1 _ 3 _ 5 _ 7 _ 9 ....把它们缩紧重新记序为1 3 5 7 9 .... 。这时3为第2个幸运数然后把所有能被3整除的序号位置的数删去。注意是序号位置不是那个数本身能否被3整除!! 删除的应该是511, 17, ...此时7为第3个幸运数然后再删去序号位置能被7整除的(19,39,...)最后剩下的序列类似1, 3, 7, 9, 13, 15, 21, 25, 31, 33, 37, 43, 49, 51, 63, 67, 69, 73, 75, 79, ...要点总结只需要考虑所有小于等于n的数就可以先全压进去然后按照题目的要求去模拟直到步长直接超过size就不用操作了。这里加一减一的坐标看一下特殊情况。代码#includebits/stdc.husing namespace std;int main(){int m,n;cinmn;vectorint lucky;for(int i1;in;ii2){lucky.push_back(i);}for(int i1;ilucky.size();i){int steplucky[i];if(steplucky.size()){break;}vectorint newl;for (int i 0; i lucky.size(); i) {if ((i 1) % step ! 0) {newl.push_back(lucky[i]);}}luckynewl;}int count 0;for (int num : lucky) {if (num m num n) {count;}if (num n) {break;}}coutcount;return 0;}题目三个农民每天清晨5点起床然后去牛棚给3头牛挤奶。第一个农民在300时刻(从5点开始计时秒为单位)给他的牛挤奶一直到1000时刻。第二个农民在700时刻开始在 1200时刻结束。第三个农民在1500时刻开始2100时刻结束。期间最长的至少有一个农民在挤奶的连续时间为900秒(从300时刻到1200时刻)而最长的无人挤奶的连续时间(从挤奶开始一直到挤奶结束)为300秒(从1200时刻到1500时刻)。 你的任务是编一个程序读入一个有N个农民(1 N 5000)挤N头牛的工作时间列表计算以下两点(均以秒为单位): 最长至少有一人在挤奶的时间段。 最长的无人挤奶的时间段。要点总结将所有时间按起始早的排序起始相同的话按结束早的排序然后遍历所有时间创造新的merge数组和前一个有重叠的话直接修改前一个的结束时间即可没有重合就插入新的。最后遍历merge来判断有人的和没人的时间。代码#includebits/stdc.husing namespace std;struct Time{int start;int end;};bool compa(Time a,Time b){if(a.start!b.start){return a.startb.start;}return a.endb.end;};int main(){int n;cinn;vectorTime arr;for(int i0;in;i){Time a;cina.starta.end;arr.push_back(a);}sort(arr.begin(),arr.end(),compa);vectorTime merge;merge.push_back(arr[0]);int endarr[0].end;for(int i1;in;i){if(arr[i].startend){merge.push_back(arr[i]);}else{if(arr[i].endmerge.back().end){merge.back().endarr[i].end;}}}int youren0,wuren0;for(int i0;imerge.size();i){if(merge[i].end-merge[i].startyouren){yourenmerge[i].end-merge[i].start;}}for(int i1;imerge.size();i){if(merge[i].start-merge[i-1].endwuren){wurenmerge[i].start-merge[i-1].end;}}coutyouren wuren;return 0;}题目写一个程序输入一个形如N/D的分数(N是分子D是分母)输出它的小数形式。如果小数有循环节的话把循环节放在一对圆括号中。例如 1/3 .33333333 写成0.(3)41/333 0.123123123... 写成0.(123)用xxx.0 表示整数典型的转化例子 1/3 0.(3)22/5 4.41/7 0.(142857)2/2 1.03/8 0.37545/56 0.803(571428)要点总结先算一下整数部分余下的部分拿来算小数。如果同样的remain出现过了那么repeat开始的地方就用map取出此时可以直接break因为循环部分已经全输入了。没有出现过的话记录一下用map记录remain的值和第一次出现的下标。另外将remain乘10再去除d得到这位小数取余d得到更新的remain。最后输出的时候不要setw了直接for里面用个count记录到次数了就换行。代码#includebits/stdc.husing namespace std;int main(){int n,d;cinnd;int zhenn/d;int remainn%d;int repeatstart-1;mapint,int remain_idx;vectorint xiaoshu;while(remain0){if(remain_idx.find(remain)!remain_idx.end()){repeatstartremain_idx[remain];break;}remain_idx[remain]xiaoshu.size();int curremain*10/d;xiaoshu.push_back(cur);remainremain*10%d;}string resto_string(zhen).;if(xiaoshu.size()0){resres0;}else{if(repeatstart-1){for(int c : xiaoshu){resresto_string(c);}}else{for(int i0;irepeatstart;i){resresto_string(xiaoshu[i]);}res(;for(int irepeatstart;ixiaoshu.size();i){resresto_string(xiaoshu[i]);}res);}}int count0;for(int i0;ires.size();i){coutres[i];count;if(count%760){coutendl;count0;}}return 0;}英语翻译量子人工智能将量子计算与人工智能结合起来以解决复杂的问题。量子算法可以加速对经典计算机来说棘手的训练以及优化过程。即使该领域目前任处于早期其对于提升人工智能的能力具有巨大潜力。人工智能驱动的推荐系统会分析用户数据来提供个性化内容。电商平台使用这些系统来推荐产品流媒体服务用这些系统来推荐电影音乐。这种个性化服务提升了用户参与度但也带来了人们对于数据隐私的担忧。人工智能在灾难相应领域的应用可以处理卫星和无人机图像来快速评估灾情。机器学习技术可以识别受影响的地区以及弱势人群进而帮助救援组织高效分配资源。这种技术在紧急情况中节约了宝贵的时间。quantum量子intractable棘手的