fafu 1261 取数相加

题目链接:http://acm.fafu.edu.cn/problem.php?id=1261

题目还不算难吧,很多种方法都可以解决的,其中有难得,也肯定有比较简单的,难得就是,不管是数字还是字符,都是一个字符的读取,这种的相对比较麻烦一点吧。

遇到数字的时候,就开始判断了,每次都将数字进行 *10+自身,然后遇到非数字字符退出,这个方法其实是还好的,就是遇到负数的时候就相对比较麻烦一点了。不过也是一种

方法。

下面说说我要介绍的一种,就是直接将整个数字的直接一次性读取,遇到非数字类型进行抛弃,下次遇到数字类型,一次性读取,把每次遇到的数字进行想加,最后的结果

保留三位小数就是所求的答案。

代码如下:

#include <stdio.h>

int main(){
 
    double ans = 0,temp;//一个是用来统计结果,一个是用来存放当前的double类型的小数
  
    char ch;//用来存放其他元素
 
      while(ch != -1){//若是为-1,则说明读取不到字符,即说明输入已经结束
 
           while(scanf("%lf",&temp)==1)//每次遇到输入的类型为double的时候,就一直读取完毕
  
                    ans += temp;//将每一次读取到的double类型存放在ans里面
   
           ch = getchar(); //读取完一个double类型之后,开始读取下一个字符,若是读取到的个数不为空,则继续
      //循环,若是没有读取到任何字符,则返回值为-1,那么就会直接跳出循环体,则
      //输出最后需要的答案
        }
      printf("%.3lf\n",ans);//得到所求的答案,并按要求保留3位小数

return 0;
 }

时间: 2024-09-30 09:57:44

fafu 1261 取数相加的相关文章

HDU 1565 方格取数(1)(状压DP)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1565 Problem Description 给你一个n*n的格子的棋盘,每个格子里面有一个非负数. 从中取出若干个数,使得任意的两个数所在的格子没有公共边,就是说所取的数所在的2个格子不能相邻,并且取出的数的和最大. Input 包括多个测试实例,每个测试实例包括一个整数n 和n*n个非负数(n<=20) Output 对于每个测试实例,输出可能取得的最大的和 Sample Input 3 75

矩阵取数游戏

题目描述 Description [问题描述]帅帅经常跟同学玩一个矩阵取数游戏:对于一个给定的n*m 的矩阵,矩阵中的每个元素aij均为非负整数.游戏规则如下:1. 每次取数时须从每行各取走一个元素,共n个.m次后取完矩阵所有元素:2. 每次取走的各个元素只能是该元素所在行的行首或行尾:3. 每次取数都有一个得分值,为每行取数的得分之和,每行取数的得分= 被取走的元素值*2i,其中i 表示第i 次取数(从1 开始编号):4. 游戏结束总得分为m次取数得分之和.帅帅想请你帮忙写一个程序,对于任意矩

P1005 矩阵取数游戏

P1005 矩阵取数游戏 题目描述 帅帅经常跟同学玩一个矩阵取数游戏:对于一个给定的n*m的矩阵,矩阵中的每个元素aij均为非负整数.游戏规则如下: 1.每次取数时须从每行各取走一个元素,共n个.m次后取完矩阵所有元素: 2.每次取走的各个元素只能是该元素所在行的行首或行尾: 3.每次取数都有一个得分值,为每行取数的得分之和,每行取数的得分 = 被取走的元素值*2^i,其中i表示第i次取数(从1开始编号): 4.游戏结束总得分为m次取数得分之和. 帅帅想请你帮忙写一个程序,对于任意矩阵,可以求出

P2774 方格取数问题

\(\color{#0066ff}{题目描述}\) 在一个有 m*n 个方格的棋盘中,每个方格中有一个正整数.现要从方格中取数,使任意 2 个数所在方格没有公共边,且取出的数的总和最大.试设计一个满足要求的取数算法.对于给定的方格棋盘,按照取数要求编程找出总和最大的数. \(\color{#0066ff}{输入格式}\) 第 1 行有 2 个正整数 m 和 n,分别表示棋盘的行数和列数.接下来的 m 行,每行有 n 个正整数,表示棋盘方格中的数. \(\color{#0066ff}{输出格式}\

Leetcode 454.四数相加II

四数相加II 给定四个包含整数的数组列表 A , B , C , D ,计算有多少个元组 (i, j, k, l) ,使得 A[i] + B[j] + C[k] + D[l] = 0. 为了使问题简单化,所有的 A, B, C, D 具有相同的长度 N,且 0 ≤ N ≤ 500 .所有整数的范围在 -228 到 228 - 1 之间,最终结果不会超过 231 - 1 . 例如: 输入: A = [ 1, 2] B = [-2,-1] C = [-1, 2] D = [ 0, 2] 输出: 2

P1392 取数[堆]

题目描述 在一个n行m列的数阵中,你须在每一行取一个数(共n个数),并将它们相加得到一个和.对于给定的数阵,请你输出和前k小的取数方法. 解析 写这题完全自闭. 根本没联想起远古时期做的 P1631 序列合并 ,这题几乎是我刚入门做的了,代码还是仿的. 真的想了很久,怀疑自己智商.jpg. 首先如果做了 P1631 序列合并 而且还记得,那么这道题其实很好做.实际上就是把求两行的前\(k\)小和改成了求\(n\)行的前\(k\)小和. 两行的情况:设单调递增数列\(a,b\),其存在最小值\(a

LeetCode 两数相加

LeetCode 两数相加 给出两个 非空 的链表用来表示两个非负的整数.其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字. 如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和. 您可以假设除了数字 0 之外,这两个数都不会以 0 开头. 示例: 输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -> 8原因:342 + 465 = 807 知识点: strrev(); // 实现字符

LeetCode 445 两数相加 II

链接:https://leetcode-cn.com/problems/add-two-numbers-ii 给定两个非空链表来代表两个非负整数.数字最高位位于链表开始位置.它们的每个节点只存储单个数字.将这两数相加会返回一个新的链表. 你可以假设除了数字 0 之外,这两个数字都不会以零开头. 进阶: 如果输入链表不能修改该如何处理?换句话说,你不能对列表中的节点进行翻转. 示例: 输入: (7 -> 2 -> 4 -> 3) + (5 -> 6 -> 4)输出: 7 -&g

hdu 1565 方格取数(2)(网络流之最大点权独立集)

题目链接:hdu 1565 方格取数(2) 题意: 有一个n*m的方格,每个方格有一个数,现在让你选一些数.使得和最大. 选的数不能有相邻的. 题解: 我们知道对于普通二分图来说,最大独立点集 + 最小点覆盖集 = 总点数,类似的,对于有权的二分图来说,有: 最大点权独立集 + 最小点权覆盖集 = 总点权和, 这个题很明显是要求 最大点权独立集 ,现在 总点权 已知,我们只要求出来 最小点权覆盖集 就好了,我们可以这样建图, 1,对矩阵中的点进行黑白着色(相邻的点颜色不同),从源点向黑色的点连一