购物单

小明刚刚找到工作,老板人很好,只是老板夫人很爱购物。老板忙的时候经常让小明帮忙到商场代为购物。小明很厌烦,但又不好推辞。

 

这不,XX大促销又来了!老板夫人开出了长长的购物单,都是有打折优惠的。

小明也有个怪癖,不到万不得已,从不刷卡,直接现金搞定。

现在小明很心烦,请你帮他计算一下,需要从取款机上取多少现金,才能搞定这次购物。

 

取款机只能提供100元面额的纸币。小明想尽可能少取些现金,够用就行了。

你的任务是计算出,小明最少需要取多少现金。

以下是让人头疼的购物单,为了保护隐私,物品名称被隐藏了。

--------------------

****     180.90       88

****      10.25       65

****      56.14        9

****     104.65        9

****     100.30       88

****     297.15       半价

****      26.75       65

****     130.62       半价

****     240.28       58

****     270.62        8

****     115.87       88

****     247.34       95

****      73.21        9

****     101.00       半价

****      79.54       半价

****     278.44        7

****     199.26       半价

****      12.97        9

****     166.30       78

****     125.50       58

****      84.98        9

****     113.35       68

****     166.57       半价

****      42.56        9

****      81.90       95

****     131.78        8

****     255.89       78

****     109.17        9

****     146.69       68

****     139.33       65

****     141.16       78

****     154.74        8

****      59.42        8

****      85.44       68

****     293.70       88

****     261.79       65

****      11.30       88

****     268.27      58

****     128.29       88

****     251.03        8

****     208.39       75

****     128.88       75

****      62.06        9

****     225.87       75

****      12.89       75

****      34.28       75

****      62.16       58

****     129.12       半价

****     218.37       半价

****     289.69       8

--------------------

 

需要说明的是,88折指的是按标价的88%计算,而8折是按80%计算,余者类推。

特别地,半价是按50%计算。

 

请提交小明要从取款机上提取的金额,单位是元。

答案是一个整数,类似4300的样子,结尾必然是00,不要填写任何多余的内容。


#include <bits/stdc++.h>
using namespace std;
int num[100005];
int vis[1000005],maxn;
void init(){
    memset(vis,0,sizeof(vis));
    maxn = 0;
    for(int i=2;i<=1000000;i++){
        if(vis[i])continue;
        num[maxn]=i;
        maxn++;
        for(int j=i+i;j<=1000000;j+=i){
            vis[j]=true;
        }
    }
}

bool judge(int a,int b){
    int F = 0;
    for(int i=num[b];i<=1000000;i+=a){
        if(vis[i]==true)break;
        F++;
    }
    if(F>=10){
        for(int i=num[b];i<=1000000;i+=a){
            if(vis[i]==true)break;
            printf("%d\n",i);
        }
        return true;
    }

    return false;
}

int main(){
    init();
    for(int i=1;i<=1000;i++){
        for(int j=1;j<=maxn;j++){
            if(judge(i,j)){
                printf("%d\n",i);
                return 0;
            }
        }
    }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值