计蒜课_加一

使用数组的来表示一个较大的数:

 1 #include<iostream>
 2 using namespace std;
 3 void add(int* &a, int length) {
 4     int c = 1;
 5     //c代表进位,完成对数组的更新,并保留最高为的进位;
 6     for (int i = length - 1;i >= 0;i--) {
 7         if ((a[i] += c) == 10) {
 8             c = 1;
 9             a[i] = 0;
10         }
11         else {
12             c = 0;
13         }
14     }
15     if (c == 1) {//最高位发生进位;
16         int*oldElem = a;//保留旧的数组地址;
17         a = new int[++length];
18         //将就数组数据迁至新数组;
19         for (int i = 0, k = 1;k<length;k++)
20             a[k] = oldElem[i++];
21         a[0] = 1;//最高位赋值为1;
22         delete[]oldElem;
23     }
24     for (int i = 0;i<length;i++)//数据的输出;
25         cout << a[i] << " ";
26
27 }
28 int main()
29 {
30     int n;
31     cin>>n;
32     int* a = new int[n];
33     for (int i = 0;i<n;i++)
34         cin >> a[i];
35     add(a, n);
36     delete[]a;
37 }

//代码较简单,不再解释;

时间: 2024-12-24 04:47:40

计蒜课_加一的相关文章

计蒜课_二分法求平方根

教训:代码一直通不过的也许因为数据类型(在本题中int改为long),而不是逻辑问题: 代码如下: 1 #include<iostream> 2 using std::endl; 3 using std::cout; 4 using std::cin; 5 inline bool isRes(long x,long y){//判断 x是否为y的平方根: 6 return (x*x==y)||((x*x<y)&&((x+1)*(x+1)>y)); 7 } 8 int

计蒜课/ 微软大楼设计方案/中等(xjb)

题目链接:https://nanti.jisuanke.com/t/15772 题意:中文题诶- 思路:对于坐标为p1(x1, y1), p2(x2, y2) 的两个核心, 其中 x1 <= x2 用 d(p1, p2) 表示两者间最矮的大楼,则需要时间为: 对于d(p1, p2) >= min(y1, y2)情况,cnt = abs(x2 - x1) + abs(y2 - y1) 对于d(p1, p2) < min(y1, y2)情况,cnt = y1 + y2 - 2*d(p1, p

计蒜课 光合作用 百度之星2012.12.23题目1

链接:https://nanti.jisuanke.com/t/38 du熊是个爱学习的孩子,他总喜欢在生活中做一些小实验,这次du熊想研究一下光合作用. du熊的实验材料有如下几样:神奇的种子,普通的纸箱和一些光源.一开始du熊将种子均匀的种在了箱子底部,你可以将其看成X轴,种子的位置为X轴上的点.然后du熊用纸板将箱子盖住,并在纸板上安装了一些光源(具体见图).神奇的种子会在有光的情况下一直向上生长直到没光为止.现在du熊想知道当实验结束时每颗种子的高度是多少? 顶上的为光源,光源两边与顶部

计蒜客_计数和数数(C语言实现)

“伯爵说”序列如下:1, 11, 21, 1211, 111221, ...1 读作 "one 1" 或者 11.11 读作 "two 1s" 或者21.21 读作 "one 2, one 1" 或者 1211. 格式:多组输入,读到文件结束.每组输入给定一个整数n,输出第n个序列.(1<=n<=30) 注意:整数序列以字符串的形式表示. 规律: 1 由 1 个 1组成 11 由 2 个 1组成 21 由 1 个 2 和 1 个 1

联想专卖店大促销(计蒜课)

题目链接:传送门 题目大意:略 题目思路:其实问了学长才会做这个题,准确说细节处理都没问题,主要是方向没对(说了跟没说一样),这个题目我们观察数据有1e5组测例,单组测例的单个数据最大1e5 限时1s,所以时间复杂度要求很高.其实有想过二分这种思想但是不知道怎么二分. 我们观察三种礼包,每种礼包其实都可以拆成两部分(1个U盘1个鼠标+X)那么我们可以想到将每件礼品都拆为两部分,然后我们对于U盘和鼠标的数目进行二分, 也就是二分答案.而判断二分值是否合理的依据是我们枚举的U盘和鼠标数<=X的数目.

计蒜课/百度的年会游戏(枚举)

题目链接:https://nanti.jisuanke.com/t/15503 题意:中文题诶- 思路:一开始想写的直接模拟gg了,赛后才想到这里可以直接枚举两个色子的点数,再来判断一下当前情况是否可行就好了... 代码: 1 #include <iostream> 2 using namespace std; 3 4 int a[5], x, y; 5 6 void yxl(int& fx, int& cnt){ 7 while(a[cnt] < fx){ 8 fx -

计蒜课/UCloud 的安全秘钥(hash)

题目链接:https://nanti.jisuanke.com/t/15768 题意:中文题诶- 思路:直接hash就好了,当时zz了没想到... 代码: 1 #include <iostream> 2 #include <stdio.h> 3 #define ll long long 4 using namespace std; 5 6 const int MAXN = 1e5; 7 ll a[MAXN] = {1}; 8 ll w[MAXN]; 9 10 int main(vo

计蒜客_跳跃游戏

传送门:https://nanti.jisuanke.com/t/18 方法:DFS 1 #include <iostream> 2 #include <algorithm> 3 using namespace std; 4 int length[510]; 5 int flag[510]; 6 int n; 7 8 bool dfs(int now) 9 { 10 if (now == n - 1) return true; 11 if (flag[now]) return fa

计蒜课 八月模拟赛题解

看见机房有大佬上周写了上面的普及信心赛 于是我康了康 8月的提高组模拟赛 9月的还没开始qwq 真的 有点难 主要是我先打开了T2 我再次 对自己的数学产生了怀疑 我现在还是不会写T2 T1 又又又又都错题了 下次重建图 尽量写vector 都写 邻接表 变量差不多的容易搞混 我这个同学变又写错了 T1 :https://nanti.jisuanke.com/t/41086 题目大意就是 一个有向图 删一个点 把与他直接和间接 相连的点 删掉 然后 求删掉所有点的最小最大代价 : 为了避免这个环