求助进制相关
  • 板块灌水区
  • 楼主lucy2012
  • 当前回复6
  • 已保存回复7
  • 发布时间2024/9/15 15:06
  • 上次更新2024/9/15 18:03:21
查看原帖
求助进制相关
1252442
lucy2012楼主2024/9/15 15:06
1 	#include <iostream>
2 	using namespace std;
3 
4 	long long n, ans;
5 	int k, len;
6 	long long d[1000000];
7 
8 	int main() {
9 	  cin >> n >> k;
10	  d[0] = 0;
11	  len= 1;
12	  ans = 0;
13	  for (long long i = 0; i <n; ++i) {
14		++d[0];
15		for (int j = 0; j + 1<len; ++j) {
16		  if (d[j] == k) {
17			d[j] = 0;
18			d[j + 1] += 1;
19			++ans;
20		  }
21		}
22		if (d[len - 1] == k) {
23		  d[len - 1] = 0;
24		  d[len] =1;
25		  ++len;
26		  ++ans;
27		}
28	  }
29	  cout << ans << endl;
30	  return 0;
31	}

问题:若 k=1,则输出 ans 时,len=n。( )

为什么是错?

解析这么说,但是我不理解:

不存在1进制,那k为1时相当于做了什么呢? 第1轮,d变为{1},内层for循环不工作,后面的if导致进位,dd变成{0,1},len为2。 第2轮,d变成{1,1},内层for循环启动,d变成{0,2},后面的if不成立,不发生进位。之后每轮都像第2轮一样,不会发生进位, n轮后,d变为{0,n},len依然为2。 第一问是错误的。

2024/9/15 15:06
加载中...