[コードテストC+]電子レンジ


今日の質問
電子レンジ
私の答え
#include <iostream>
#include <vector>
using namespace std;

// 전자레인지
void solution(int t){
    int time[] = {300, 60, 10};
    int num[3];
    for(int i=0;i<3;i++){
        num[i] = t / time[i];
        t = t % time[i];
    }
    if(t != 0)
        cout<<-1<<endl;
    else{
        for(int i=0;i<3;i++)
            cout<<num[i]<<" ";
        cout<<endl;
    }
}
解法
  • の大数から点数をつけ、正解を見つけた.このようにする理由は最大の数で入れますが、入れなければ残りで埋めなければなりませんが、最大よりも数が多くなります.
  • しかもこのように解くことができるのは、大数が小数の倍数であるからである.必ず取って代わることができるので、この方法を使うことができます.300 60 10ではなく300 33 21だと答えが違いますこの時、分けたお金を一つ一つ出してチェックしなければならない.
  • 別の答え
    #include<cstdio>
    int t;
    int main() {
        scanf("%d", &t);
        printf(t%10?"-1":"%d %d %d",t / 300,t/ 60%5,t/ 10%6);
        return 0;
    }
    学ぶべきところ
  • だからこの一行でも