关于 J t3 不取模写法
  • 板块学术版
  • 楼主Archy_
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/10/26 22:08
  • 上次更新2024/10/26 22:12:00
查看原帖
关于 J t3 不取模写法
895312
Archy_楼主2024/10/26 22:08
  1. 先考虑不重要的数去掉,3,5,9.
  2. 记录一下当前位数,和木棍数。枚举每个情况,看看是否满足数位少1,木棍数不小于0.
  3. 一直输出即可

很神奇,正确性证明怎么证明??

#include <iostream>
#include <cstring>
#include <cmath>
using namespace std;

int num[7] = {0, 1, 2, 4, 6, 7, 8};
int w[7] = {6, 2, 5, 4, 6, 3, 7};

int main() {
	cin.tie(0) -> ios::sync_with_stdio(0);
	int t; cin >> t;
	while(t --) {
		int n; cin >> n;
		int p = ceil(n / 7.0);
		bool f = 1;
		if(n % 7 == 1) {
			cout << "-1\n"; 
			continue;
		}
		while(p > 0) {
			int i;
			if(f) i = 1, f = 0;
			else i = 0;
			for(; i <= 6; i ++) {
				if(n - w[i] < 0) continue;
				int np = ceil((n - w[i]) / 7.0);
				if(np == p - 1) {
					cout << num[i];
					p --; n -= w[i];
					break;
				}
			}
		}
		cout << "\n";
	}
	return 0;
}
2024/10/26 22:08
加载中...