第十三届蓝桥杯大赛软件赛省赛_C/C++大学B组_试题C:刷题统计

文章目录

  • 赛题描述
  • 思路
  • 算法实现


赛题描述

思路

[2022年04月14日18时42分28秒_]
初步想到的方法有两种:
1.模拟(这个方法在a,b极限小n极限大的情况下,一定会超时,不适用)
2.数学的方法

================
[2022年04月14日21时39分05秒_]
方法2(可行):
以一周为一个整体x=(5a+2b)对n做除法,取整,再做模拟。

================
[2022年04月14日22时59分16秒_]
a,b,n的数据范围为1-1E18;

================

算法实现

#include<iostream>

//a,b,n的数据范围为1-1E18;
//long long数据范围:-9223372036854775808~+9223372036854775807
typedef long long tl;

int main(void){
    tl a,b,n;
    scanf("%lld %lld %lld",&a,&b,&n);
    tl week = n/(5*a+2*b);
    n = n - week*(5*a+2*b);
    
    tl day = 0;
    tl tmp = 0;
    for(int i = 1;i <= 7;i++){
        if(tmp >= n) break;
        if(i <= 5){
            tmp += a;
        }else{
            tmp += b;
        }
        ++day;
    }
    printf("%lld",week*7 + day);
    return 0;
}


[2022年04月14日23时49分12秒_]
ok,搞定。

================

[2022年04月16日16时39分35秒_]这工具(应用名称:C语言编译器IDE)不错,手机安卓端C语言编译器,可编译执行小型项目编码。

================
[2022年04月16日23时54分19秒_]C语言编译器IDE

================

更多推荐

第十三届蓝桥杯大赛软件赛省赛_C/C++大学B组_试题C:刷题统计