---
# System prepended metadata

title: Untitled

---

## 問題

商品名と支払い金額を入力すると、お釣りの「小銭の枚数」を返す関数またはメソッドを実装せよ。商品名と価格は以下の通り。

 * お茶: 120円
 * コーラ: 150円
 * エナジードリンク: 280円

入力される通貨は日本円で、最大1000円までとする。
また、有効な貨幣は「1000円」「500円」「100円」「50円」「10円」とする。

たとえば、「1000円でお茶を購入」すると、返却すべき金額は880円だが、釣銭は「500円×1, 100円×3, 50円×1, 10円×3」となる。返り値は、任意の形式のクラス、連想配列、オブジェクト、構造体、リストなどで表現してよい。

PHPの擬似コードで書くと以下のようになる。

```php
function calcChange(string $item, int $paid_money): array {
    // ...
}

$expected = [500 => 1, 100 => 3, 50 => 1, 10 => 3];
assert($expected === calcChange("お茶", 1000));
```
map<int,int> calculate(int kakaku,int money){
    if(kakaku>money){
        std::cout<<"金額が足りません"<<std::endl;
        map<int,int>ans;
        ans[500]=0;
        ans[100]=0;
        ans[50]=0;
        ans[10]=0;
        return ans;
    }else{
        map<int,int>ans;
        int sum=money;
        sum-=kakaku;
        ans[500]=0;
        ans[100]=0;
        ans[50]=0;
        ans[10]=0;
        if(sum>=500){
            ans[500]=1;
            sum%=500;
        }
        if(sum>=100){
            ans[100]=sum/100;
            sum%=100;
        }
        if(sum>=50){
            ans[50]=1;
            sum%=50;
        }
        if(sum>=10){
            ans[10]=sum/10;
            sum%=10;
        }
        return ans;
        
        
    }
}
map<int,int> ans(int money,string item){
    if(item=="お茶"){
        return calculate(120,money);
    }else if(item=="コーラ"){
        return calculate(150,money);
    }else if(item=="エナジードリンク"){
        return calculate(280,money);
    }else{
        std::cout<<"そのような商品はありません"<<std::endl;
        map<int,int>none;
        none[500]=0;
        none[100]=0;
        none[50]=0;
        none[10]=0;
        return none;
    }
}



hoge
大丈夫です