2 条题解
-
0
#include <bits/stdc++.h> using namespace std; int a[100], L[10], R[10]; int main() { int n, x; scanf("%d%d", &n, &x); a[1] = 1; for(int i=2; i<=n; i++) a[i] = a[i-1] * 3; //考虑到每个砝码有三种用法:不用,放左边,放右边,由此联想到三进制 for(int i=1; i<=n; i++) printf("%d ", a[i]); printf("\n"); a[n+1] = a[n] * 3; int s = x, l = 0, r = 0; for(int i=1; i<=n; i++) { if((s + a[i]) % a[i+1] == 0) { L[++l] = a[i]; s += a[i]; } else if((s - a[i]) % a[i+1] == 0) { R[++r] = a[i]; s -= a[i]; } } printf("%d", x); for(int i=1; i<=l; i++) printf("+%d", L[i]); printf(":"); for(int i=1; i<r; i++) printf("%d+", R[i]); printf("%d\n", R[r]); return 0; } -
0
#include<bits/stdc++.h> using namespace std; int a[100],L[10],R[10]; int main() { int n,x;scanf("%d%d",&n,&x); a[1]=1;for(int i=2;i<=n;i++)a[i]=a[i-1]*3; //考虑到每个砝码有三种用法:不用,放左边,放右边,由此联想到三进制 for(int i=1;i<=n;i++) printf("%d ",a[i]); printf("\n"); a[n+1]=a[n]*3; int s=x,l=0,r=0; for(int i=1;i<=n;i++) { if((s+a[i])%a[i+1]==0) { L[++l]=a[i]; s+=a[i]; } else if((s-a[i])%a[i+1]==0) { R[++r]=a[i]; s-=a[i]; } } printf("%d",x); for(int i=1;i<=l;i++)printf("+%d",L[i]); printf(":"); for(int i=1;i<r;i++) printf("%d+",R[i]); printf("%d\n",R[r]); return 0; }
- 1
信息
- ID
- 2556
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 5
- 标签
- 递交数
- 71
- 已通过
- 26
- 上传者