《A+B 输入输出练习I》 题解(鬼畜版)

《算法笔记》 Codeup 黑盒测试 你的任务是计算若干整数的和。 输入 每行的第一个数N,表示本行后面有N个数。 如果N=0时,表示输入结束,且这一行不要计算。 输出 对于每一行数据需要在相应的行输出和。 #include int main (void) { int N; int sum = 0; while(scanf("%d",&N)!= EOF)//连续计算N个数的和. { int sum = 0;//为了防止接下来... 阅读详情

 温馨提示,本题解提供多种思路的代码与解析(有一些不准确)!

目录

题目描述

输入描述

输出描述

解析

完整代码


描述

你的任务是计算a+b。这是为了acm初学者专门设计的题目。你肯定发现还有其他题目跟这道题的标题类似,这些问题也都是专门为初学者提供的。

输入两个数,回车后输出结果,然后再输入一对,回车再输出结果。。。。

输入描述

输入包含一系列的a和b对,通过空格隔开。一对a和b占一行。

输出描述

对于每次输入的每对a和b,你需要依次输出a、b的和。

用例输入 1 

1 5

用例输出 1 

6

来源

算法笔记 基础循环

简单方法

为了处理一系列输入的a和b对,并在每次输入后输出它们的和,我们可以使用C++中的循环结构。这个程序会一直读取输入,直到没有更多的数据为止(例如,通过按Ctrl+D或Ctrl+Z+Enter在命令行中结束输入)。以下是一个符合你描述的C++程序示例:

#include <iostream>

int main() {
    int a, b;
    // 使用一个无限循环来不断读取输入
    while (true) {
        // 尝试从标准输入读取两个整数
        std::cin >> a >> b;
        // 检查输入是否成功,如果不成功则退出循环
        if (std::cin.fail()) {
            break;
        }
        // 计算a和b的和
        int sum = a + b;
        // 输出结果到标准输出
        std::cout << sum << std::endl;
    }
    return 0;
}

然而,在实际比赛中,通常不会使用无限循环和std::cin.fail()来检查输入结束。相反,更常见的是使用某种形式的输入结束标记,或者从文件读取数据。但在这个特定的问题中,由于题目描述并没有提供明确的输入结束标记,我们假设用户会在输入完所有数据后手动结束输入。

记忆化搜索方法

记忆化搜索(Memoization Search)是一种优化技术,通常用于优化递归搜索算法,通过记录已经计算过的结果以避免重复计算。这种方法特别适用于解决动态规划问题和一些具有重叠子问题特性的递归问题。

对于简单的A+B问题,实际上并不需要使用记忆化搜索,因为这是一个非常基础且计算量很小的操作。然而,为了展示记忆化搜索的应用,我们可以构想一个更复杂的场景,其中A和B可能是某种复杂计算的结果,而这些计算可以通过记忆化来优化。

但在这里,为了符合题目的原始要求(即输入A、B,输出A+B),我们将展示一个简化的记忆化搜索框架,尽管在这个特定问题上它并不是必需的。这个框架主要是为了展示记忆化搜索的技术,而不是真正用于优化A+B的计算。

#include <iostream>
#include <unordered_map>
#include <string>
#include <functional>

// 我们有一个复杂的函数来计算A或B
int complexCalculation(int x) {
    // 在实际应用中,这里可能是一些复杂的计算
    return x;
}

// 记忆化搜索函数(在这个例子中,实际上并没有进行搜索,只是展示了记忆化的框架)
int memoizedAdd(std::unordered_map<std::string, int>& memo, int a, int b) {
    // 构造一个唯一的键来表示这个特定的计算(在实际应用中,键可能更复杂)
    std::string key = std::to_string(a) + "_" + std::to_string(b);

    // 检查我们是否已经计算过这个结果
    if (memo.find(key) != memo.end()) {
        // 如果已经计算过,直接返回结果
        return memo[key];
    }

    // 如果没有计算过,进行计算
    int result = complexCalculation(a) + complexCalculation(b);

    // 将结果存储在记忆化缓存中
    memo[key] = result;

    // 返回结果
    return result;
}

int main() {
    int A, B;
    std::cin >> A >> B;

    // 创建一个记忆化缓存
    std::unordered_map<std::string, int> memo;

    // 调用记忆化搜索函数(在这个例子中,它实际上就是简单的加法)
    int result = memoizedAdd(memo, A, B);

    // 输出结果
    std::cout << result << std::endl;

    return 0;
}

在这个例子中,memoizedAdd 函数接受一个记忆化缓存(memo)、两个整数A和B,并返回它们的和。我们构造了一个唯一的键来表示这个特定的计算(在这个简单例子中,键是A和B的字符串表示,用下划线分隔)。然后,我们检查这个键是否已经在记忆化缓存中。如果是,我们直接返回缓存中的结果。如果不是,我们进行计算,将结果存储在缓存中,并返回结果。

动态规划转移方法

使用动态规划(Dynamic Programming, DP)来解决。

我们将定义一个DP数组,但实际上我们不会用它来存储中间结果,因为A+B没有中间状态需要保存。不过,为了满足动态规划的形式,我们还是会设置一个DP数组,并展示如何进行状态转移。

以下是一个使用“动态规划转移”方法来解决A+B问题的C++程序(请注意,这里的“动态规划转移”实际上是对大材小用的夸张说法):

#include <iostream>
#include <vector>

int main() {
    int A, B;
    std::cin >> A >> B;

    // 初始化DP数组,大小为1,因为这个问题只有一个状态需要计算(即A+B)
    // 实际上,我们不需要这个数组,但为了符合动态规划的形式,我们还是声明了它
    std::vector<int> dp(1, 0);

    // 假设我们有一个状态转移函数,它实际上只是返回A+B
    // 在真正的动态规划问题中,这个函数会根据前面的状态来计算当前状态
    auto dpTransition = [&](int a, int b) -> int {
        // 这里没有真正的状态转移,只是直接返回A+B
        // 在复杂的DP问题中,这里会有逻辑来计算dp[i]基于dp[i-1]或其他前面的状态
        return a + b;
    };

    // 使用“动态规划转移”来计算A+B(实际上就是直接计算)
    dp = dpTransition(A, B);

    // 输出结果,注意我们只使用dp,因为只有一个状态
    std::cout << dp << std::endl;

    return 0;
}

在这个程序中,我们定义了一个大小为1的DP数组dp,以及一个模拟状态转移的lambda函数dpTransition。然而,在这个简单的A+B问题中,dpTransition函数只是直接返回了A和B的和,并没有真正进行状态转移。我们还是将结果存储在dp中,并最终输出了它。

请注意,这个程序并没有真正展示动态规划的力量,因为动态规划通常用于解决具有重叠子问题和最优子结构特性的复杂问题。

贪心加广搜方法

使用贪心算法结合广度优先搜索(BFS)通常用于解决一些特定的优化问题,比如图论中的最短路径问题(虽然通常使用Dijkstra算法或Bellman-Ford算法,但在某些情况下可以用贪心加BFS替代)或其他类似问题。然而,对于简单的A+B加法问题,贪心算法和BFS都不是必要的,因为它们通常用于更复杂的问题。

不过,为了满足你的要求,我们可以尝试构造一个问题,其中贪心算法和BFS可以以一种不自然但有趣的方式结合起来,以解决一个类似A+B但稍微复杂一点的问题。比如,我们可以考虑一个场景,其中我们需要找到两个数A和B的和,但这两个数是通过一系列操作从一个初始状态得到的,而这些操作可以用BFS来探索,同时贪心算法可以用来选择最优的操作序列。

但是,直接对A+B问题应用这种方法是牵强的。因此,我将构造一个稍微复杂一点的问题,然后展示如何使用贪心加BFS来解决它。

‌问题构造‌:

假设我们有一个整数数组nums和一个目标值target。我们的任务是从数组中选择两个数A和B(A和B可以是同一个数),使得它们的和‌最接近‌但不超过target。我们可以对数组中的每个元素进行一次操作:将其增加或减少一个固定的值delta(delta为正整数)。我们希望使用最少的操作次数来达到这个目标。

‌解决方案‌:

  1. ‌贪心策略‌:为了尽量减少操作次数,我们希望尽量选择那些已经接近目标和的数。因此,我们可以先对数组进行排序,然后优先考虑那些与目标值最接近的数。

  2. ‌广度优先搜索(BFS)‌:我们可以使用BFS来探索所有可能的操作序列。每个状态可以表示为一个元组(index, current_sum, operations),其中index是当前考虑的数组元素的索引,current_sum是当前选择的数的和,operations是已经执行的操作次数。

然而,这个问题实际上更适合用其他算法(如二分查找加动态规划)来解决,我们将尝试用贪心加BFS的方法。

以下是一个简化的示例代码,它并不完全优化,但展示了如何使用贪心加BFS的思想:

#include <iostream>
#include <vector>
#include <queue>
#include <algorithm>
#include <climits>

struct State {
    int index; // 当前考虑的数的索引
    int current_sum; // 当前选择的数的和
    int operations; // 已经执行的操作次数
};

int closestSum(std::vector<int>& nums, int target, int delta) {
    std::sort(nums.begin(), nums.end()); // 贪心策略:先排序

    std::queue<State> q;
    q.push({0, 0, 0}); // 初始状态

    int closest_sum = -1; // 最接近但不超过target的和
    int min_operations = INT_MAX; // 达到最接近和所需的最小操作次数

    while (!q.empty()) {
        State current = q.front();
        q.pop();

        if (current.index == nums.size()) {
            // 已经考虑了所有数,检查当前和是否是最接近的
            if (current.current_sum <= target &&
                (closest_sum == -1 || target - current.current_sum < target - closest_sum ||
                 (target - current.current_sum == target - closest_sum && current.operations < min_operations))) {
                closest_sum = current.current_sum;
                min_operations = current.operations;
            }
            continue;
        }

        // 考虑当前数,有两种选择:加上它或者不加
        q.push({current.index + 1, current.current_sum + nums[current.index], current.operations});

        // 还可以考虑对当前数进行操作,使其更接近target(这里只考虑增加,减少的情况类似)
        // 注意:这里为了简化,我们只考虑增加一次delta,实际上可能需要多次增加或减少
        if (current.current_sum + nums[current.index] + delta <= target) {
            q.push({current.index + 1, current.current_sum + nums[current.index] + delta, current.operations + 1});
        }
        
        // 也可以考虑不选择当前数,直接跳到下一个数
        q.push({current.index + 1, current.current_sum, current.operations});
    }

    return closest_sum;
}

int main() {
    std::vector<int> nums = {1, 3, 7, 10};
    int target = 15;
    int delta = 2;

    int result = closestSum(nums, target, delta);
    std::cout << "Closest sum to " << target << " is " << result << std::endl;

    return 0;
}

请注意,这个示例代码并不完全正确或高效,因为它没有考虑所有可能的操作序列(比如多次增加或减少同一个数)。在实际应用中,可能需要一个更复杂的算法来正确解决这个问题。然而,它展示了如何使用贪心策略(排序)和BFS(探索状态空间)来结合解决一个稍微复杂一点的问题。对于简单的A+B问题,这种方法显然是不必要的,也是低效的。

树方法

使用树结构来解决A+B问题实际上并不是最直接或最高效的方法,因为A+B本身是一个简单的加法运算,不需要复杂的数据结构。我们可以构造一个问题,其中树结构可以用来寻找某个目标值,这个问题与A+B有一定的相似性,但更加复杂。

‌问题构造‌:

假设我们有一个二叉树,每个节点都有一个整数值。我们的任务是在这棵树中找到两个节点,使它们的和等于一个给定的目标值。为了增加复杂性,我们可以假设每个节点只能被访问一次,并且我们希望找到这样的节点对,使得从根节点到这两个节点的路径长度之和最小。

‌解决方案‌:

  1. ‌树的遍历‌:我们可以使用深度优先搜索(DFS)或广度优先搜索(BFS)来遍历树,并记录每个节点的值和它的路径长度。

  2. ‌哈希表‌:在遍历的过程中,我们可以使用一个哈希表来存储已经访问过的节点的值和对应的路径长度。这样,在访问每个新节点时,我们可以检查哈希表中是否已经存在一个节点,它的值与当前节点的值之和等于目标值。

  3. ‌路径长度之和‌:当我们找到一个节点对,它们的和等于目标值时,我们需要检查从根节点到这两个节点的路径长度之和是否是最小的。如果是,我们更新最小路径长度。

以下是一个简化的示例代码,它展示了如何使用树结构和哈希表来解决这个构造出来的问题:

#include <iostream>
#include <unordered_map>
#include <climits>

// 二叉树节点的定义
struct TreeNode {
    int val;
    TreeNode* left;
    TreeNode* right;
    TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
};

// 辅助函数,用于在树中查找节点对,使它们的和等于目标值,并返回最小路径长度之和
int findMinPathLength(TreeNode* root, int target, std::unordered_map<int, int>& valueToPathLength, int currentPathLength, int& minPathLength) {
    if (!root) return -1; // 空节点,返回-1

    // 计算当前节点到目标值的差值
    int complement = target - root->val;

    // 检查哈希表中是否已经存在差值,如果存在,则更新最小路径长度
    if (valueToPathLength.count(complement)) {
        int totalPathLength = currentPathLength + valueToPathLength[complement];
        if (totalPathLength < minPathLength) {
            minPathLength = totalPathLength;
        }
    }

    // 更新哈希表,记录当前节点的值和路径长度
    valueToPathLength[root->val] = currentPathLength;

    // 递归遍历左子树和右子树
    findMinPathLength(root->left, target, valueToPathLength, currentPathLength + 1, minPathLength);
    findMinPathLength(root->right, target, valueToPathLength, currentPathLength + 1, minPathLength);

    // 回溯时从哈希表中删除当前节点的值,以便为其他路径腾出空间(可选,取决于具体实现)
    valueToPathLength.erase(root->val);

    return minPathLength;
}

int main() {
    // 构造二叉树
    TreeNode* root = new TreeNode(5);
    root->left = new TreeNode(3);
    root->right = new TreeNode(18);
    root->left->left = new TreeNode(2);
    root->left->right = new TreeNode(4);
    root->right->left = new TreeNode(15);
    root->right->right = new TreeNode(20);

    int target = 7; // 目标值
    int minPathLength = INT_MAX; // 初始化最小路径长度为最大整数值
    std::unordered_map<int, int> valueToPathLength; // 哈希表,用于存储节点值和路径长度的映射

    // 调用函数查找最小路径长度
    int result = findMinPathLength(root, target, valueToPathLength, 0, minPathLength);

    if (result != INT_MAX) {
        std::cout << "Minimum path length to find two nodes with sum " << target << " is " << result << std::endl;
    } else {
        std::cout << "No such nodes found." << std::endl;
    }

    // 释放内存(省略了完整的内存释放逻辑,实际应用中需要确保所有节点都被正确删除)

    return 0;
}

请注意,这个示例代码是为了展示如何使用树结构和哈希表来解决一个构造出来的问题,而不是直接解决A+B问题。在实际应用中,对于简单的A+B问题,我们只需要直接计算A和B的和,而不需要使用树或哈希表。

结束了!

对了,忘说了一句话:

要想c++成绩好,就来jiabei小课堂。

还有,点我主页,看我简介,别给那三个人点赞就完了

 

A+B 输入输出练习I(c语言) 话不多说 看题 你的任务是计算a+b。这是为了acm初学者专门设计的题目。 你肯定发现还有其他题目跟这道题的标题类似, 这些问题也都是专门为初学者提供的。 输入 输入包含一系列的a和b对,通过空格隔开。一对a和b占一行。 输出 对于输入的每对a和b,你需要依次输出a、b的和。 如对于输入中的第二对a和b,在输出中它们的和应该也在第二行。 样例输入 Copy 1 5 10 20 样例输出 Copy 6 30 说白了,这道题就针对小白的,上代码 #include <stdio.h> in 阅读详情

相关推荐

ArcGIS新手必看:5分钟搞定等高线转DEM栅格(附完整操作截图)

本文详细介绍了在ArcGIS中将等高线转换为DEM栅格的完整流程,包括CAD数据预处理、TIN转栅格和直接插值法两种核心方法,以及常见问题排查与优化技巧。通过实战案例和操作截图,帮助GIS新手快速掌握这一测绘数据处理的核心技能,提升地形分析和三维可视化效率。

dapp9builder的博客 286

ACM第一周训练

A题 ‎你的任务是计算a + b.‎ ‎太容易了?!答案是肯定的!我专门为acm初学者设计了这个问题。‎ ‎你一定发现有些问题与这个问题具有相同的标题,是的,所有这些问题都是为同一目的而设计的。‎ ‎输入‎ ‎输入将由一系列整数 a 和 b 对组成,以空格分隔,每行一对整数。‎ ‎输出‎ ‎对于每对输入整数 a 和 b,应在一行中输出 a 和 b 的总和,并在输入中的每一行输出一行。‎ Sample Input 1 5 10 20 Sample Output 6 30 #in

qq_62761353的博客 4709

Jetson Orin NX上CAN总线调试全攻略:从硬件焊接到开机自启动(附常见问题解决方案)

本文详细介绍了在NVIDIA Jetson Orin NX开发板上进行CAN总线调试的全过程,包括硬件焊接、驱动配置、通信测试和开机自启动设置。针对常见问题如信号接反、波特率设置等提供了实用解决方案,帮助开发者快速实现稳定的CAN总线通信。

c2d3e4f的博客 1076

蓝桥每日一练

一:a+b 你的任务是计算a + b.太容易了?!答案是肯定的!我专门为acm初学者设计了这个问题。你一定发现有些问题与这个具有相同的标题,是的,所有这些问题都是为相同的目的而设计的 #include<stdio.h> int main() { int a,b; while(scanf("%d %d",&a,&b)!=EOF) { printf("%d\n",a+b); } } 二:第一行整数表示输入整数 a 和 b 的数量。你的任务是计算a + b。

qq_64061668的博客 1414

Infiniband互连网络概述

一、Infiniband是什么? InfiniBand(简称IB)是一种工业标准规范,它定义了一种输入/输出架构,用于计算节点、通信基础设施设备、存储和嵌入式系统的互连。操作系统可以是Linux、Windows或ESXI。 IB网络一共是五层,从第一天起,IB就被设计为提供一个端到端的解决方案,改善和加速从物理层到上层的所有协议层。 IB协议于2000年由IBTA(InfiniBand Trade Association)提出,其规定了一...

weixin_41687819的博客 5229

基于Super-Jacoco的精准测试实践之路

灵魂拷问这个版本的影响范围到底有多大?研发改动了代码,为什么不通知测试?测试用例真的全面覆盖了吗?测试同学的测试覆盖情况该怎么评估?什么是精准测试概念借助技术手段、通过辅助算法对软件测试过...

咻咻ing的专栏 5841

ACM俱乐部练习--A+B 输入输出练习I

题目描述 你的任务是计算a+b。这是为了acm初学者专门设计的题目。你肯定发现还有其他题目跟这道题的标题类似,这些问题也都是专门为初学者提供的。 输入 输入包含一系列的a和b对,通过空格隔开。一对a和b占一行。 输出 对于输入的每对a和b,你需要依次输出a、b的和。 如对于输入中的第二对a和b,在输出中它们的和应该也在第二行。 样例输入 1

此博客已不用 8095

2D激光slam数据集的下载与测试

参考博客: https://blog.youkuaiyun.com/qq_24894159/article/details/81265991 https://blog.youkuaiyun.com/fk1174/article/details/52673413#commentBox 数据集下载与生成 下载数据集 下载网址: http://ais.informatik.uni-freiburg.de/slamevaluation/datasets.php 进去网站后点你想下载的对应的"download log file" 然后你

老李的博客 4025

Codeforces Round #406 (Div. 2)A+B(这鬼畜的英文)

A. The Monster time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard output A monster is chasing after Rick and Morty on another planet. They’re so frig

妍恐龙的博客....^~^眼熟我 1546

MSVS C# Matlab的混合编程系列2 - 构建一个复杂(含多个M文件)的动态库:

本节我们尝试将一个有很多函数和文件的Matlab算法文件集成到C#的项目里面。

山云的专栏 2069

PCL 点到面的ICP算法【2024最新版】

经典的点到面的ICP算法。博客长期更新,本文最新更新时间为:2024年10月18日。

点云侠的博客 36万+

div2题目题解:I. Powers Of Two

题目: I. Powers Of Two time limit per test4 seconds memory limit per test256 megabytes inputstandard input outputstandard output A positive integer x is called a power of two if it can be represented as...

DevourPower的博客 675

【大语言模型 85】IA3与其他PEFT方法对比

在大语言模型时代,参数高效微调(PEFT)技术成为了降低微调成本的关键。本文深入解析IA3(Infused Adapter by Inhibiting and Amplifying Inner Activations)方法,并与LoRA、AdaLoRA、Prefix Tuning等主流PEFT技术进行全面对比,通过理论分析、代码实现和实验验证,帮助读者理解不同PEFT方法的优劣势和适用场景,为实际项目中的技术选型提供科学依据。

熵数实验室 753

【题解】网络流24题一句话题解集合

最近写了下《线性规划与网络流24题》,发下代码和题解,事实上就是将交给cycycy的题解复制一下 T1 飞行员配对方案问题 solution 裸的匈牙利 code #include&lt;bits/stdc++.h&gt; using namespace std; #define cl(x) memset(x,0,sizeof(x)) const int maxn=20...

测试运算符 561

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

[鬼畜的离散化]隐形的翅膀

题目描述 天使告诉小杉,每只翅膀都有长度,两只翅膀的长度之比越接近黄金分割比例,就越完美。 现在天使给了小杉N只翅膀,小杉想挑出一对最完美的。 格式输入格式每组测试数据的 第一行有一个数N(2<=N<=30000) 第二行有N个不超过1e5的正整数,表示N只翅膀的长度。 20%的数据N<=100 输出格式对每组测试数据输出两个整数,表示小杉挑选出来的一对翅膀。 注意,比较短的在前,如

~NULL~ 1092

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Gym 102059 B Dev, Please Add This! 题解

首先可以根据题目信息建立有向图GGG,如果存在边u→vu\rightarrow vu→v则点uuu可以通过一步到达vvv。 然后我们在根据边建立一个有向图G′G\primeG′ 其中边u→vu\rightarrow vu→v表示边走完uuu这条边可以立刻走vvv这条边。 然后我们将G′G\primeG′跑一遍SCCSCCSCC。然后预处理出每一个SCCSCCSCC能取到的星星集合SSS,这个可以bitsetbitsetbitset搞。 这样我们暴力跑一边,看能不能拿到所有星星是会TLETLETLE的。我这题

qq_42925924的博客 687

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

骑马修栅栏 题解

骑马修栅栏 题目 农民JohnJohnJohn每年有很多栅栏要修理。他总是骑着马穿过每一个栅栏并修复它破损的地方。 JohnJohnJohn是一个与其他农民一样懒的人。他讨厌骑马,因此从来不两次经过一个一个栅栏。你必须编一个程序,读入栅栏网络的描述,并计算出一条修栅栏的路径,使每个栅栏都恰好被经过一次。JohnJohnJohn能从任何一个顶点 ( 即两个栅栏的交点 ) 开始骑马,在任意一个顶点结束...

Y的博客 1428

GDUT_排位赛题解报告_第2场_B. Snakes

题目: B. Snakes time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard output According to legend, St. Patrick banished all of the snakes in Mooland over a tho...

DevourPower的博客 369

题解 - Educational Codeforces Round 84 (Rated for Div. 2)

Educational Codeforces Round84 (A−E)\mathrm{ Educational \ Codeforces \ Round 84 \ (A-E)}Educational Codeforces Round84 (A−E) 题解 罚时真是个鬼畜的玩意。。 A Sum of Od...

wangyiyang2的博客 473

幂的模运算(题解)

题目描述:输入三个正整数a,b,c 计算a^b mod c。输入格式:第一行输入三个正整数a,b,c。输出格式:输出a^b mod c 的值。样例输入输出:Mod.in mod.out2 3 5 3数据范围:30%的数据满足:a,c*c 在longint 范围内,b<=10000;50%的数据满足:a,b,c*c 都在longint 范围内;100%的数据满足:a,b,c 在lon...

dianminba7855的博客 450

2019NOIP普及组题解

2019NOIP普及组题解 最近重新捡起了好久没学的算法,刚好2019NOIP刚刚比赛完,就去做了一下普及组的题目(提高组太变态了),感觉思维方面的东西比较多,相对来说数据结构考的不是很复杂,难点大多在于模型的建立与求解。题目评测都是在北大NOIP金牌大佬yxc开发的ACwing上做的,没有官方测试数据, 所以也不能保证代码一定完全正确。下面先来看题目吧… 1161. 数字游戏 原题链接 分析...

weixin_43896255的博客 6347

题解:luoguP1861 星之器

为什么全世界都说这是个物理题,不应该是一个数学题吗,神犇的势能完全看不懂 我们直接来看题,对于一个点,在计算时候横坐标和纵坐标互不影响,所以我们分开考虑。 我们记两个点假如横坐标相同,分别记纵坐标为a,b于是,收益就是$b-a-1$ 然后用 当年写大视野鬼畜的思想 来化一下式子,我们可以得到 $$b-a-1=(2*b-2*a-2)/2$$ $$~~~~~~~~~~~~~~~~~~~~~~...

weixin_30781775的博客 214

GDUT_排位赛题解报告_第3场_B.Loan Repayment

题目: Farmer John owes Bessie N gallons of milk (1≤N≤1012). He has to give her the milk within K days. However, he doesn’t want to give the milk away too quickly. On the other hand, he has to make forwa...

DevourPower的博客 408

国庆集训1012(未完成)

周 (week) 【题目描述(删减版)】 退役之后,liuliuliu_rundarundarunda决定以周为单位安排文化课和OIOIOI的学习.距离他退役还有NNN周. OIOIOI水平LevelOILevelOILevelOI和文化课水平LevelWHKLevelWHKLevelWHK都是一个整数,而LevelZS=LevelOI∗LevelWHKLevelZS=LevelOI*LevelW...

qyxpsx7的博客 218

[BZOJ4576]262144 分治/区间DP

只有我是鬼畜的分治做法吗。。。先形象的理解,假如某一个很小的数孤零零的在那里,它阻断了左右两边的合并,导致问题可以被分治解决考虑从小的数字往大的数字合并,若有一2*k长度的相同数字块,我们可以直接将数字加一而长度变为k,若有一2*k+1长度的,则必定会阻断左右,则要分合并后的k个分给左边和右边两种情况讨论。solve(l,r,b)表示把l到r的中的b元素全部合并所能的到的最大值。用双向链表维护上述数

DOFYPXY的博客 464

GDUT_寒假训练题解报告_数论专题_个人题解报告——题目:D - Beautiful Numbers (CodeForces - 300C)【逆元、组合数公式】

原题链接http://codeforces.com/problemset/problem/300/C 题目: Vitaly is a very weird man. He’s got two favorite digits a and b. Vitaly calls a positive integer good, if the decimal representation of this int...

DevourPower的博客 444
上一篇: 《Hello World》 题解(鬼畜版)
下一篇: 《正整数N转换成一个二进制数》 题解
jiabei2012
博客等级 码龄3年 566粉丝 146原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值