洛谷P 1887
タイトル
原題アドレスのテーマの説明はM個とNの正の整数を見つけてください.彼らの積はできるだけ大きくしなければなりません.
ディクショナリシーケンスの最小化のシナリオを出力します.
入出力フォーマット入力フォーマット:1行、2つの正の整数N,M
出力フォーマット:M個とN個で、できるだけ大きな正の整数を乗算します.
入出力サンプル入力サンプル1:6 3出力サンプル1:2 2 2説明100%のデータに対して、1le Nle 10^{9}、1le Mle 10^{6}1≦N≦10 9、1≦M≦10 6
問題解
去年の省大会のテーマにまた打撃を受けた石楽志は、弱智のテーマを作って自信を探しに走ってきた.の本当はやりやすいと思っていたのに、何度もWAして、長さが足りないのかと思って、変数を全部long longかWAに変えて、データを探してやっと最後の結果だけを加えるべきではなく、すべての結果に1つずつ(後ろから)加えればいいことに気づいた.もともと何行でできることがこんなに長く書かれていました...心が痛い...
コード#コード#
原題アドレスのテーマの説明はM個とNの正の整数を見つけてください.彼らの積はできるだけ大きくしなければなりません.
ディクショナリシーケンスの最小化のシナリオを出力します.
入出力フォーマット入力フォーマット:1行、2つの正の整数N,M
出力フォーマット:M個とN個で、できるだけ大きな正の整数を乗算します.
入出力サンプル入力サンプル1:6 3出力サンプル1:2 2 2説明100%のデータに対して、1le Nle 10^{9}、1le Mle 10^{6}1≦N≦10 9、1≦M≦10 6
問題解
去年の省大会のテーマにまた打撃を受けた石楽志は、弱智のテーマを作って自信を探しに走ってきた.の本当はやりやすいと思っていたのに、何度もWAして、長さが足りないのかと思って、変数を全部long longかWAに変えて、データを探してやっと最後の結果だけを加えるべきではなく、すべての結果に1つずつ(後ろから)加えればいいことに気づいた.もともと何行でできることがこんなに長く書かれていました...心が痛い...
コード#コード#
#include
using namespace std;
long long m = -1, n = -1;
long long result[1000000];
int main(int argc, const char * argv[]) {
cin >> n >> m;
for(int count = 0; count < m; count++)
result[count] = n/m;
long long sum = 0;
for(long long num:result)
sum += num;
for(long long count = m-1; count >= 0; count--){
if(sum == n)
break;
result[count]++;
sum++;
}
cout << result[0];
for(int count = 1; count < m; count++)
cout << " " << result[count];
return 0;
}