• 1564: [蓝桥杯2021初赛] 杨辉三角形与空间与相乘


     杨辉三角形

    下面的图形是著名的杨辉三角形:


    如果我们按从上到下、从左到右的顺序把所有数排成一列,可以得到如下数列:
    1, 1, 1, 1, 2, 1, 1, 3, 3, 1, 1, 4, 6, 4, 1, ...
    给定一个正整数N,请你输出数列中第一次出现N 是在第几个数?

    输入格式

    输入包含T行,表示T组测试数据。T不超过10。
    每行输入一个整数N,N不超过10^9。

    输出格式

    对于每组测试数据输出一行表示答案。

    输入样例 

    1. 2
    2. 3
    3. 6

    输出样例 

    1. 8
    2. 13

    1. #include <iostream>
    2. #include <bits/stdc++.h>
    3. #include <algorithm>
    4. using namespace std;
    5. typedef long long ll;
    6. int n;
    7. ll fun(int a, int b)
    8. {
    9. ll res = 1;
    10. for(int i = a, j = 1; j <= b; i -- ,j ++ )
    11. {
    12. res = res * i / j;
    13. if(res > n) return res;
    14. }
    15. return res;
    16. }
    17. bool check(int k)
    18. {
    19. ll l = k * 2;
    20. ll r = max((ll)n, l);
    21. while(l < r)
    22. {
    23. ll mid = l + r >> 1;
    24. if(fun(mid, k) >= n)
    25. {
    26. r = mid;
    27. }
    28. else l = mid + 1;
    29. }
    30. if(fun(r, k) != n) return 0;
    31. cout << r * (r + 1) / 2 + k + 1 << endl;
    32. return 1;
    33. }
    34. int main()
    35. {
    36. scanf("%d", &n);
    37. for(int i = 16; i >= 0; i -- )
    38. {
    39. if(check(i))
    40. {
    41. return 0;
    42. }
    43. }
    44. return 0;
    45. }

    空间

    小蓝准备用256MB 的内存空间开一个数组,数组的每个元素都是32 位二进制整数。
    如果不考虑程序占用的空间和维护内存需要的辅助空间,请问256MB 的空间可以存储多少个32 位二进制整数?

    1. #include <iostream>
    2. using namespace std;
    3. int main()
    4. {
    5. // 请在此输入您的代码
    6. //1MB=1024KB
    7. //1KB=1024B
    8. //1B=8b;
    9. //B:byte字节
    10. //b:bit比特(1位=1比特)
    11. //32位=4B
    12. //题解的意思是有多少个32位
    13. //转化成long long避免数据溢出
    14. cout<<(long long)256*1024*1024*8/32;
    15. return 0;
    16. }

    相乘

    小蓝发现,他将 1 至 1000000007 之间的不同的数与 2021 相乘后再求除以 1000000007 的余数,会得到不同的数。 
    小蓝想知道,能不能在 1 至 1000000007 之间找到一个数,与 2021 相乘后 再除以 1000000007 后的余数为 999999999。
    如果存在,请在答案中提交这个数; 如果不存在,请在答案中提交 0。

    1. #include <iostream>
    2. #include <bits/stdc++.h>
    3. #include <algorithm>
    4. using namespace std;
    5. typedef long long ll;
    6. int main()
    7. {
    8. ll n = 1000000007;
    9. ll i = 1;
    10. while(1)
    11. {
    12. if((n * i + 999999999) % 2021 == 0)
    13. {
    14. cout << ((n * i + 999999999) / 2021);
    15. return 0;
    16. }
    17. i ++;
    18. }
    19. return 0;
    20. }

  • 相关阅读:
    C语言:两个数的交换函数
    Redis介绍
    会计信息系统复习资料
    闲聊电脑(7)常见故障排查
    html静态网站基于品优购电商购物网站网页设计与实现共计3个页面 html+css+javascript网页设计实例 企业网站制作
    线程安全实例 --- 计时器
    Java Thread.join()具有什么功能呢?
    基于Spring Boot的个人博客系统(源码+数据库)
    云原生专栏博客汇总
    MFC web文件 CHttpFile的使用初探
  • 原文地址:https://blog.csdn.net/aasd23/article/details/124934697