yukicoder No.83 - 最大マッチング

Source

ニコニコミュニティ
問題文

問題概要

問題原文の図(7セグメントディスプレイ)のようにマッチで数字を作ることができる.
$N$ 本のマッチがあるとき,何桁の整数を作っても良いので,作れる最大の整数を求める問題.
マッチは使い切る必要はない.

解法

桁数が大きければ必ず大きいので,桁数を増やすことが第一.
よって,基本的には,単独で最も使用マッチの本数が小さい $1$ を作り続ければ良い.
$N$ が奇数の場合は,$1$ 本余るが,$3$ 本のマッチで $7$ が作れるので,最も上の桁を $1$ つ,$7$ に変更してあげる.

C++によるスパゲッティなソースコード

#include<bits/stdc++.h>
using namespace std;

#define REP(i,a,b) for(i=a;i<b;i++)
#define rep(i,n) REP(i,0,n)

#define mygc(c) (c)=getchar_unlocked()
#define mypc(c) putchar_unlocked(c)

void reader(int *x){int k,m=0;*x=0;for(;;){mygc(k);if(k=='-'){m=1;break;}if('0'<=k&&k<='9'){*x=k-'0';break;}}for(;;){mygc(k);if(k<'0'||k>'9')break;*x=(*x)*10+k-'0';}if(m)(*x)=-(*x);}

int main(){
  int N;

  reader(&N);
  if(N%2) mypc('7'), N-=3;
  while(N>=2) N-=2, mypc('1');
  mypc('\n');

  return 0;
}

Current time: 2017年07月23日15時44分45秒
Last modified: 2015年01月28日23時52分55秒 (by laycrs)
Tags: Competitive_Programming yukicoder
トップページに戻る

Logged in as: unknown user (not login)

ログイン: