上机热身赛总结

坑爹的上机热身赛……不过真的是学到了很多的东西,零散的记在这里,作为自己C++的学习历程见证。

1.多组数据读入

while (cin >>a>>b)

{

cout  << a+b<<endl;

}

2.逻辑连接词

且&&

或||

3.使用三角函数sin cos tan 需要加cmath头文件

4.min函数 min(x,y) 需要加algorithm头文件

5.A?B:C 三元运算符 若A则运行B否则运行C

6.取余运算符%

7.if (条件)

      {语句}

    else if(条件)

      {语句}

    else if(条件)

     {语句}

如果其中一个满足 则后面的不判断

8.while(n--)

进行第一次循环的时候n值已经为n-1了 一直到0的循环完毕 --n是从n-1到1的循环完毕 n++和++n类似

9.string

string需要加头文件string

例如 string s;

cin >>s;

可以用n=s.size()获取string字符“s”的长度

s[n](n为数字)可以读取s里面的字符(n从0开始取值 0是第一个读到的值——就是从左向右数的第一个……)

int x=s[n]-'0'(n为数字)

10.char 

char可以用

int x=(int)a;
int y=(int)b;
这样的指令可以将char里面的字符转换为对应的ASCII数字
(刚刚经过测试 char是可以直接比较大小的……)
11.输出小数点后十位
cout.setf(ios::fixed);
cout.setf(ios::showpoint);
cout.precision(10);
然后cout << a<<endl;的话 a就会保留到小数点后十位
PS:如果没有
cout.setf(ios::fixed);会一共保留10位 原因不明
12.附上自己过得8题的代码……自己看着都不明觉厉
题目:

Description

将n个不同编号(从1~n)的小球放入n个不同编号(从1~n)的盒子,要求每个盒中有且仅有一个球,并且任意一盒的编号与至于其内的球的编号不同,请问有多少种放法?
这便是由伯努利数学世家提出的著名数学问题“装错信封问题”的简化模型,泛化名称为——全错位排列。

Many years later,瑞士数学家欧拉提出了该模型的计算公式:
<img:/richtext/res/406/QQ%E6%88%AA%E5%9B%BE20130918161102.png>
请你根据以上公式,计算当球(盒)为n的时候放法的数量。
(Thor:“渣诚不要给公式啊——”)

Input

多组测试数据。
每组测试数据为一个正整数n(1≤n≤20),表示球(盒)的个数。
末尾以输入一个0结束

Output

对于每组数据,输出一行,包含一个整数,为放法数量

Sample Input

2
3
4
0

Sample Output

1
2
9

Hint:

请用递归实现

解:

#include <iostream>
#include <iomanip>
using namespace std;


unsigned long C (unsigned long);

int main()
{
    int a;
    while (cin >> a)
    {
    if (a==0)
    {
        break;
    }
    else
    {
    int counter = a-1;
    cout <<C(counter)<<endl;
    }
    }
}

unsigned long C(unsigned long number)
{
    if (number <=2)
    return number;
    else
    return (number)*(C(number-1)+C(number-2));
}
就先写这些吧




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值