NC206648. 爱买手办的张三
描述
输入描述
一行,一个非负整数
输出描述
第一行: 输出一个整数代表张三最少购买了多少手办。 接下来
行,每行一个整数,代表当前手办的愉悦值
。
之后一行:输出一个整数代表张三最多购买了多少手办。 接下来
行,每行一个整数,代表当前手办的愉悦值
注:你必须输出一个递增且没有重复元素的序列,即对于且
示例1
输入:
0
输出:
1 0 1 0
示例2
输入:
3
输出:
1 3 4 0 1 2 3
C++14(g++5.4) 解法, 执行用时: 847ms, 内存消耗: 5352K, 提交时间: 2020-06-14 19:06:14
#include<iostream> using namespace std; int n,s=0; int main() { ios::sync_with_stdio(false), cin.tie(0), cout.tie(0); cin>>n; cout<<1<<endl<<n<<endl; for(int i=0;i<=n;i++) if((i|n)==n)s++; cout<<s<<endl; for(int i=0;i<=n;i++) if((i|n)==n)cout<<i<<'\n'; return 0; }
C++(g++ 7.5.0) 解法, 执行用时: 1637ms, 内存消耗: 5304K, 提交时间: 2022-11-18 14:57:09
#include<bits/stdc++.h> using namespace std; int main(){ int n,s=0; cin >> n; cout << 1 << endl << n << endl; for(int i=0;i<=n;i++){ if((i | n)==n) s++; } cout << s << endl; for(int i=0;i<=n;i++){ if((i| n)==n) cout << i << endl; } return 0; }
C 解法, 执行用时: 474ms, 内存消耗: 7264K, 提交时间: 2021-11-17 09:27:05
#include<stdio.h> int main(){ int x,cnt=0,a[1000005]; scanf("%d",&x); printf("1\n%d\n",x); for(int i=0;i!=x&&cnt<1000000;i++) if((i|x)==x)a[++cnt]=i; a[++cnt]=x; printf("%d\n",cnt); for(int i=1;i<=cnt;i++) printf("%d\n",a[i]); }
Python3(3.5.2) 解法, 执行用时: 3541ms, 内存消耗: 8448K, 提交时间: 2020-06-07 20:10:47
x = int(input()) bit = [] for i in range(0, 31): if((x>>i)&1): bit.append(i) print(1) print(x) up = (1<<len(bit)) print(up) for mask in range(0, up): state = 0 for i in range(0, len(bit)): if((mask>>i)&1): state |= (1<<bit[i]) print(state)
C++ 解法, 执行用时: 1066ms, 内存消耗: 5248K, 提交时间: 2021-05-21 15:06:00
#include<bits/stdc++.h> using namespace std; int main() { int n,i;cin>>n; cout<<"1"<<endl; cout<<n<<endl; int s=0; for(i=0;i<=n;i++) { if((i|n)==n) s++; } cout<<s<<endl; for(i=0;i<=n;i++) if((i|n)==n) cout<<i<<endl; return 0; }