『Luogu OJ』『C++』Level 1-3 循环!循环!循环!

关卡1-3,6道题  循环!循环!循环!

任务说明:计算机最不怕的就是重复。你让它做10000次同样的事它也不怕啦,但是让他做1亿亿次的话……

要完成这个任务,请将以下的题目都AC掉(即通过这道题目):

1. 三连击 P1008

2.级数求和 P1035

3.数字反转 P1307

4.小玉在游泳 P1423

5.小鱼的航程(改进版) P1424

6.计数问题 P1980

成就达成时间:2015-07-15 21:54

什么?你问我这么水的题怎么拖了这么久?

首先今天课比较多……

其次被string坑死了

真是Qiku了、、、

我大Pascal多么自然地str(i,s)什么的,跑这来没玩死我。

1. 三连击 P1008

将1,2,…,9共9个数分成三组,分别组成三个三位数,且使这三个三位数构成1:2:3的比例,试求出所有满足条件的三个三位数。

hhhhh。NOIp史上最伟大的题。

他训练了非常伟大的一种方法---打表法。

 1 #include<iostream>
 2 using namespace std;
 3 int main()
 4 {
 5     cout<<192<<" "<<384<<" "<<576<<endl;
 6      cout<<219<<" "<<438<<" "<<657<<endl;
 7      cout<<273<<" "<<546<<" "<<819<<endl;
 8      cout<<327<<" "<<654<<" "<<981<<endl;
 9   return 0;
10 }
11  

2.级数求和 P1035

已知:Sn= 1+1/2+1/3+…+1/n。显然对于任意一个整数K,当n足够大的时候,Sn大于K。
  现给出一个整数K(1<=k<=15),要求计算出一个最小的n;使得Sn>K。

我如今才意识到居然那么久之前就玩过级数

当初怎么想的?台阶级数?hhhh

这题也是水题

但是专坑Pascal-->c系列选手

 1 #include<iostream>
 2 using namespace std;
 3 int main()
 4 {
 5     int k;
 6     cin>>k;
 7     double s=0;
 8     for (int i=1;i<=21400000;++i) //我就是属于那种能不写while就不写的人,肉麻吧
 9       {
10           s=s+1.0/i;                           //传统原生c系选手一定很清楚
11           if (s>k)                                //  除号前后是整数为整除,所以一定写0.1
12           {
13               cout<<i<<endl;
14               return 0;
15               exit;
16           }
17       }
18   return 0;
19 }
20  

3.数字反转 P1307

  给定一个整数,请将该数各个位上数字反转得到一个新数。新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零(参见样例2)。

输入格式:

  输入文件名为reverse.in 。 
  输入共1 行,一个整数 N。

输出格式:

  输出文件名为reverse.out 。 
  输出共1行,一个整数,表示反转后的新数。

【样例输入1】
123
【样例输入2】
-380
【样例输出1】
321
【样例输出2】
-83

没有难度,我说对pascal,然而如果你不熟悉String in Cpp(像我一样、那就呵呵呵吧)
 1 #include<iostream>
 2 #include<string>
 3 using namespace std;
 4 int main()
 5 {
 6     string st;
 7     char s;
 8     cin>>st;
 9     int n=st.size();  //n:=length(st);
10     n--;                  //下标为0~n-1
11     s=st[n];
12     while (s==‘0‘)  //注意等于是双等号这个专为Pascal设计的坑。
13     {0
14              --n;
15             s=st[n];
16     }
17     if (st[0]==‘-‘)    //Cpp中都是0开头,st[0]存第一个字符而不是字符长度
18     {  cout<<‘-‘;
19        for (int i=n;i>=1;--i)
20          cout<<st[i];
21     }
22     else
23     for (int i=n;i>=0;--i)
24         cout<<st[i];
25   return 0;
26 }

4.小玉在游泳 P1423

小玉开心的在游泳,可是她很快难过的发现,自己的力气不够,游泳好累哦。已知小玉第一步能游2米,可是随着越来越累,力气越来越小,她接下来的每一步都只能游出上一步距离的98%。现在小玉想知4道,如果要游到距离x米的地方,她需要游多少步呢。请你编程解决这个问题。

这个丝毫没有坑,一分钟搞定。

 1 #include<iostream>
 2 using namespace std;
 3 int main()
 4 {
 5     double meters=0;
 6     double s=0;
 7     double power=2.0;
 8     cin>>meters;
 9     for (int i=1;i<=21000000;++i)  //依旧强行用for
10       {
11           s=s+power;
12           power=power*0.98;
13           if (s>=meters)
14           {
15               cout<<i<<endl;
16               return 0;
17               exit;
18           }
19       }
20   return 0;
21 }22 

5.小鱼的航程(改进版) P1424

有一只小鱼,它上午游泳150公里,下午游泳100公里,晚上和周末都休息(实行双休日),假设从周x(1<=x<=7)开始算起,请问这样过了n天以后,小鱼一共累计游泳了多少公里呢?

这个我被坑了很久。最后换了下算法……晕晕乎乎的丝毫想不出之前哪里错了(WA 1个点)

 1 /*错误代码,90分*/
 2 #include<iostream>
 3 using namespace std;
 4 int main()
 5 {
 6     int x,n;
 7     cin>>x>>n;
 8     int length=0;
 9     while (n>0)
10         {
11            for (int i=x;i<=5;++i,--n)
12              {
13                  if (n<=0) break;
14                 length+=250;
15              }
16            x=1;
17            n=n-2;
18            if (n<=0) break;
19         }
20     cout<<length<<endl;
21 return 0;
22 }
 1 /* AC */
 2 #include<iostream>
 3 using namespace std;
 4 int main()
 5 {
 6     int x,n;
 7     cin>>x>>n;
 8     int length=0;
 9     for (int i=1;i<=n;++i)
10        {
11           if (x<=5) length+=250;
12           ++x;
13           if (x==8) x=1;
14         }
15     cout<<length<<endl;
16     return 0;
17 }

这个 思路上没什么问题。但PJ第一道这种水平还老挂掉真是太丢人了!!!!!!!!!没脸见人了。

Qiku……

然而,这远远不是终点

6.计数问题 P1980

试计算在区间 1 到 n 的所有整数中,数字 x(0 ≤ x ≤ 9)共出现了多少次?例如,在 1
到 11 中,即在 1、2、3、4、5、6、7、8、9、10、11 中,数字 1 出现了 4 次。

这又是PJ第一道水题。

PASCAL算法十分简单啊

str(i,s)爆搜s中的每个字符,完了

数据范围是<1000000 怎么看都不会超时。

然而

首先我翻了半天都不知道怎么Cpp转字符串

于是我可耻地抄了一个函数

1 #include<string>
2 #include<sstream>
3
4 string getstring (const int n)
5 {
6     stringstream newstr;
7     newstr<<n;
8     return newstr.str()
9 }

然而……这个函数效率似乎很低下

 1 #include<iostream>
 2 #include <string>
 3 #include <sstream>
 4 #include <stdlib.h>
 5 using namespace std;
 6 string getstring (const int n)
 7 {
 8
 9     stringstream newstr;
10     newstr<<n;
11     return newstr.str();
12
13 }
14 int main()
15 {
16   long long num=0;
17   int n,x;
18   string st;
19   string xx;
20   cin>>n>>x;
21   xx=getstring(x);
22   for (int i=1;i<=n;++i)
23     {
24         st=getstring(i);
25         int m=st.size();
26         for (int j=0;j<=m-1;++j)
27           {
28              if (st[j]==xx[0]) ++num;
29           }
30     }    cout<<num<<endl;
31   return 0;
32 }

这么简洁的式字在Luogu 上居然TLE4个点、、我本上跑1000000 4之类的点正好秒出,忘记NOIp官方平台什么鬼了。
测试点 #1通过该测试点。 得分10,耗时0ms,内存2134kB。
测试点 #2通过该测试点。 得分10,耗时0ms,内存2138kB。
测试点 #3超过时间限制。 得分0,内存2109kB。
测试点 #4通过该测试点。 得分10,耗时15ms,内存2138kB。
测试点 #5超过时间限制。 得分0,内存2109kB。
测试点 #6通过该测试点。 得分10,耗时811ms,内存2142kB。
测试点 #7通过该测试点。 得分10,耗时0ms,内存2129kB。
测试点 #8通过该测试点。 得分10,耗时748ms,内存2138kB。
测试点 #9超过时间限制。 得分0,内存2105kB。
测试点 #10超过时间限制。 得分0,内存2113kB。

只好写了个数学算法的、、依旧肉麻哦,值得期待。

 1 #include<iostream>
 2 using namespace std;
 3 int main()
 4 {
 5   int num=0;
 6   int n,x;
 7   cin>>n>>x;
 8   for (int i=1;i<=n;++i)
 9     {
10         if(i%10==x)num++;
11         if(i/10%10==x&&i>9) num++;
12         if(i/100%10==x&&i>99) num++;
13         if(i/1000%10==x&&i>999) num++;
14         if(i/10000%10==x&&i>9999) num++;
15         if(i/100000%10==x&&i>99999) num++;
16     }
17   cout<<num<<endl;
18   return 0;
19 }

麻不麻

嗯、还好吧

晚安呐、

时间: 07-15

『Luogu OJ』『C++』Level 1-3 循环!循环!循环!的相关文章

『Luogu OJ』『C++』Level 1-2

关卡1-2,3道题  顺序与分支 任务说明:计算机的智能性开始得以体现,因为计算机能够根据不同的条件选择了. 要完成这个任务,请将以下的题目都AC掉(即通过这道题目): 1.小玉家的电费 2.不高兴的津津 3.津津的储蓄计划 成就达成时间:2015-07-14 20:26 1.小玉家的电费 P1422 夏天到了,各家各户的用电量都增加了许多,相应的电费也交的更多了.小玉家今天收到了一份电费通知单.小玉看到上面写:据闽价电[2006]27号规定,月用电量在150千瓦时及以下部分按每千瓦时0.446

2014.08.16『转岗』『该来的,总得面对』

转岗申请的Email总算发出去了,心里长舒一口气,该来的,总得面对. 愿在阿里研究院的未来依然光明. 安全部,提前说再见了. 2014.08.16『转岗』『该来的,总得面对』,布布扣,bubuko.com

『AngularJS』$location 服务

参考: ng.$location Developer Guide: Angular Services: Using $location 简介 $location服务解析在浏览器地址栏中的URL(基于window.location)并且让URL在你的应用中可用.改变在地址栏中的URL会作用到$location服务,同样的,改变$location服务也会改变浏览器的地址栏.(可以使用$location进行重定向等操作) $location服务: 暴露浏览器地址栏中的URL,让你可以: 监察URL.

谈谈前端『新』技术

技术这个行当,永远会有新东西出来,不进则退.更关键的是,前端比起整个软件工程乃至计算机科学体系来说,是个相对新生草莽的领域,近年来前端生态的发展其实都是在向其他领域吸收和学习,不论是开发理念.工程实践还是平台本身(规范.浏览器).所谓的『根正苗红』的前端,不过是整个发展进程中探索的一个阶段而已,那个时代的最佳实践,很多到今天都已经不再适用.过往的经验固然有价值,但这些经验如果不结合对新事物本身的了解,就很难产生正确的判断.这里需要强调的是,学习新事物并不是为了不考虑实际需求的滥用,而是为了获取足

oj 1031 random permutation

Problem A: Random PermutationsTime Limit: 1 Sec  Memory Limit: 128 MB Submit: 91  Solved: 54 Description 随机排列生成算法 (运行a.exe输出数字的个数,运行a.exe test时输出为一次随机的排列) Input The input will be a list of integers Output The number of the integers Sample Input 1 2 3

第九章、文件与文件系统的压缩与打包

1. 压缩文件的用途与技术 2. Linux 系统常见的压缩命令 2.1 compress 2.2 gzip, zcat 2.3 bzip2, bzcat 3. 打包命令: tar 4. 完整备份工具:dump, restore 5. 光盘写入工具 5.1 mkisofs:创建映像档 5.2 cdrecord:光盘烧录工具 6. 其他常见的压缩与备份工具 6.1 dd 6.2 cpio 7. 重点回顾 1. 压缩文件的用途与技术 2. Linux 系统常见的压缩命令 压缩文件的扩展名大多是:『*

centos启动流程[转]

启动流程概览 在硬件驱动成功后,Kernel 会主动呼叫 init 程序,而 init 会取得 run-level 资讯: init 运行 /etc/rc.d/rc.sysinit 文件来准备软件运行的作业环境 (如网络.时区等): init 运行 run-level 的各个服务之启动 (script 方式): init 运行 /etc/rc.d/rc.local 文件: init 运行终端机模拟程序 mingetty 来启动 login 程序,最后就等待使用者登陆啦:    init,/etc

NIS 服务器

有没有想过,如果我有十部 Linux 主机,这十部主机仅负责不同的功能,事实上, 所有的主机账号与对应的密码都相同!那么我是将账号与密码分别设定置在十部计算机上面, 还是可以透过一部主机做为账号管理的功能,然后其他的主机只要当用户用登入时, 就必须要到管理账号的主机上面确认其账号与密码呢?哪一个比较方便而且灵活? 当然是找一个账号管理的主机比较方便的多啦!如果有用户要修改密码,不必要去到十部主机修改密码啦! 只要到主要管理主机去修改,其他的主机根本就不需要更动!哈哈!轻松又愉快呢!这个功能的达成

linux进程管理(四)

[教程主题]:进程管理 [1]进程介绍 程序和进程 程序是为了完成某种任务而设计的软件,比如OpenOffice是程序.什么是进程呢?进程就是运行中的程序. 一个运行着的程序,可能有多个进程. 比如自学it网所用的WWW服务器是apache服务器,当管理员启动服务后,可能会有好多人来访问,也就是说许多用户来同时请求httpd服务,apache服务器将会创建有多个httpd进程来对其进行服务. 进程分类: 进程一般分为交互进程.批处理进程和守护进程三类. 值得一提的是守护进程总是活跃的,一般是后台