整值函数小结


  所谓整值函数,其实就是主要围绕顶和底运算展开的,当然提了一下取模运算,算是为下一章数论内容铺下路吧。
  其实对于顶和底他们本身,并没有什么复杂性,但当利用它去讨论各种问题时,就发现并没有想象中那么简单了。但要知道的是,顶和底更方便的是去描述一个问题,而通过对它的处理可以改变解决问题的方法,由讨论实际问题转向数学模型的处理。
  这里我觉得取模运算的出现位置不太好,顶和底的递归与和式应该放在一起。毕竟其实这部分内容的重点与难点就是这些了。其实到这里就能看到处理和式的意义了,或者说渐渐体会到处理和式在计算机应用的作用了,虽然不见得能够类似递归式一样求出一个封闭式解决问题,但可以利用这些方法对已有的算法进行空间或时间上的优化,有些时候也同时简化了问题。说实话,这部分内容如果详细说来没什么可说的,可能就是书中方法的一次重述而已,但真正有意义的是整个这部分包含的一种思想,对于一个复杂问题,如何去以自己的角度分析问题,如何去描述这一问题(并且自己有能力通过这种描述方式去解决这一问题),然后对以后的这种描述处理或化简,最终在允许的限制内解决问题。所以,解决一个问题当然要看自己的能力和方法,同时也要看一个问题自身的复杂性,如果问题过于复杂,即使能够解出来或许也会浪费大量时间和精力,或许得不偿失。而同样的,反过来讲,即使自身的能力和方法并不那么优秀,但对于某些问题或许并不需要多么完美的方法就可以解决,而关键在于有没有找到其角度,这样的问题才更有价值,或许“性价比”更高。自然,自身实力是一切的保障也是基础嘛。
  取模运算我觉得更应该放在{}符即表示一个实数的小数部分的符号这里。因为在刚看到这一符号时,我就马上感觉到了顶底运算和取模运算的相似之处,而且由于x=floor(x)+{x},即整数部分加小数部分,所以可以得到x%n=n*{x/n}。一个是建立在和运算的,一个是建立在乘运算的,还是有很大的相似之处的。
  再者嘛,就说一说别的了。这周恰好在讨论新生赛题目问题,我本来没打算出题的,但忽然就突发奇想想出来个还挺有意思的题目,给出题的同学看了下不过好像没被采纳。说实话我自己觉得这个题目还是挺有意思的,关键在讨论其封闭式时恰好还用到了需要最近学到的东西(虽然并不深入),也算是学以致用吧。
  
lwz学长要出去玩
  自行车协会的lwz学长闲不住,想去学校外面玩,但疫情期间出不去。不过小道消息称部分门可以偷偷溜出去(不要学lwz学长呀),这可把lwz高兴坏了,可是前提是他要知道学校到底有多少门啊!又据小小道消息,学校内总共有n个十字路,并且每条路总是连接两个大门,所以学校最少有几个门呢。lwz学长想了半天也没想明白,请你帮他算一下吧(lwz学长说帮他算出来他要请协会所有人喝奶茶~)。(注:下图仅表达题意,不保证是需求的最优结果)

输入格式
 输入一个整数t(t<=1000000),表示将要测试的数据数。接下来的t行里每行输入一个整数n(n<=300)表示存在的十字路口数。
输出格式
 对于每个测试用例,输出一行包含一个整数,表示可能的最少门口数。
例:
Input
3
1
3
4
Output
4
8
8

#include<iostream>
#include<cmath>
using namespace std;
int main()
{
    for(int i=1;i<=100;i++)
    {
        int x=ceil(sqrt(i))*ceil(sqrt(i))-ceil(sqrt(i));
        cout<<2*(2*ceil(sqrt(i))-(i<=x?1:0))<<" ";
        if(!(i%10)) cout<<endl;
    }
    return 0;
}

//实际不需要做到如此O(1)解决,找出规律O(n)递推即可,关键在于找到规律且能够用好循环和分支语句就能够解决。
//扩展:如果还存在m个T形路。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值