7 条题解
-
7
这里很简单的啦~我们来看看吧(结尾有彩蛋!)
- 这一道题可以用数组来做,首先存储一个数组 a ,并且将 n 设为 long long 形式
- 然后每一次都将 a[i] 的值设为 n % 8(最后一位数)
- 然后用 s 保存一共有几个数,最后倒叙输出即可~
上代码吧!(AC通过~)
#include <bits/stdc++.h> using namespace std; void eight(long long n) { int s = 0, a[1000]; while (n > 0) { a[++s] = n % 8; n /= 8; } for (int i = s; i >= 1; i--) cout << a[i]; } int main() { long long n; cin >> n; eight(n); return 0; }
最后是进制数的小函数,请收下~(j 代表进制,并且这个函数不能用在 10进制以上!)
void jinzhi(long long n, int j) { int s = 0, a[1000]; while (n > 0) { a[++s] = n % j; n /= j; } for (int i = s; i >= 1; i--) cout << a[i]; }
-
1
很简单 首先在n>0时对n以8取余,记录余数,建议用数组; 再将余数倒序输出,为了知道有多少位,可以再取余时以变量记录; 上代码!(已AC,最重要的部分)
#include <bits/stdc++.h> using namespace std; int main(){ long long n; int x=0,a[50]; cin>>n; while(n)a[++x]=n%8,n/=8; for(int i=x;i>=1;i--)cout<<a[i]; return 0; }
格式化版:
#include <iostream> using namespace std; int main(){ long long n; int x=0,a[50]; cin>>n; while(n>0) { a[++x]=n%8; n/=8; } for(int i=x;i>=1;i--) { cout<<a[i]; } return 0; }
(小彩蛋:我用软件算了一下,a只要14个元素,所以开a[15]就可以了)
- 1
信息
- ID
- 285
- 时间
- 1000ms
- 内存
- 16MiB
- 难度
- 4
- 标签
- 递交数
- 543
- 已通过
- 240
- 上传者