UVA 10523 Very Easy!!!(大数据加法、乘法)
题意:给出N,A,计算i*A^i(i=1~N)的和。1<=N<=30,0<=A<=15。
就是大数据运算,别的没什么,注意细节之处即可。
这题还要注意两个地方:
1.考虑A=0的情况,直接输出0即可。(我没写这个判断时,竟给我RE,而不是WA。。。不知道RE出在哪里了)
2.计算A^i的值的时候,不要每次都重新计算,会超时。后一次A^(i+1)可以利用前一次A^i的结果,乘以A即可。
- #include <iostream>
- #include <string.h>
- #include <stdio.h>
- #include <string>
- #include <string.h>
- using namespace std;
- int N,A;
- int n1,n2,n3;//n1表示a的位数,n2表示b的位数,n3表示c的位数
- int a[],b[],c[]; //a存储A的值,b存储N的值,c存储A^i的值
- int ans[],tmp[]; //ans存储最后的结果
- void add(int b[]) {
- for(int i=; i<; i++) {
- ans[i]=ans[i]+b[i];
- if(ans[i]>) {
- ans[i]-=;
- ans[i+]++;
- }
- }
- }
- int multiply(int a1[],int b1[],int n1,int n2) {
- memset(tmp,,sizeof(tmp));
- for(int i=; i<n1; i++) {
- for(int j=; j<n2; j++) {
- tmp[i+j]+=a1[i]*b1[j];
- }
- }
- for(int i=; i<n1+n2; i++) {
- if(tmp[i]>=) {
- tmp[i+]+=tmp[i]/;
- tmp[i]%=;
- }
- }
- /*
- for(int i=0; i<n1+n2; i++)
- c[i]=tmp[i];
- */
- //第n1+n2位的序号为n1+n2-1,一开始就直接写了c[n1+n2]>0,结果就错了
- if(tmp[n1+n2-]>)
- return n1+n2;
- else
- return n1+n2-;
- }
- int main() {
- while(scanf("%d%d",&N,&A)!=EOF) {
- memset(ans,,sizeof(ans));
- //不写下面A=0的情况,会RE,但具体RE出在哪里就不知道了
- if(A==) {
- printf("0\n");
- continue;
- }
- if(A<)
- n2=;
- else
- n2=;
- a[]=A%;
- a[]=A/;
- memset(c,,sizeof(c));
- c[]=;
- n1=;
- //不需要每次都重新计算A^i的值(不然会超时),后一次A^(i+1)可以利用前一次A^i的结果,每次计算的值存储在c数组里
- for(int i=; i<=N; i++) {
- n1=multiply(c,a,n1,n2);
- //将乘后的结果存入到c数组,以便后一次利用
- for(int j=; j<n1+n2; j++)
- c[j]=tmp[j];
- b[]=i%;
- b[]=(i/)%;
- b[]=i/;
- if(i<)
- n3=;
- else if(i<)
- n3=;
- else
- n3=;
- //每次循环i*A^i的值存储在tmp数组里后,再与ans相加存储到ans数组中
- multiply(c,b,n1,n3);
- add(tmp);
- }
- //找到ans中最高位的索引
- int idx=;
- while() {
- if(ans[idx]==) {
- idx--;
- continue;
- } else
- break;
- }
- for(int i=idx; i>=; i--) {
- printf("%d",ans[i]);
- }
- printf("\n");
- }
- return ;
- }
UVA 10523 Very Easy!!!(大数据加法、乘法)的更多相关文章
- 大数据的乘法实现——C语言
1大数据乘法的算法思路: 输入两个字符串,得到结果,例如:123456789*123456789: 思路:1)首先 123456789*1 = 9 18 27 36 45 54 63 ...
- 剑指offer第12题打印从1到n位数以及大整数加法乘法
字符和数字加减就是字符的ASCII码和数字直接加减. 方法一: 1)在字符串操作中给一个整形数字加(字符0)就是把它转化为字符,当然给一个字符减去(字符0)就可以把它转化为数字了:如果确实是最后 ...
- UVa 10523 - Very Easy !!!
题目大意:给你一个公式,直接按照式子计算就可以了,要用到大数. import java.io.*; import java.util.*; import java.math.*; class Main ...
- 【大数据】Scala学习笔记
第 1 章 scala的概述1 1.1 学习sdala的原因 1 1.2 Scala语言诞生小故事 1 1.3 Scala 和 Java 以及 jvm 的关系分析图 2 1.4 Scala语言的特点 ...
- 17_常用API_第17天(包装类、System、Math、Arrays、大数据运算)_讲义
今日内容介绍 1.基本类型包装类 2.System类 3.Math类 4.Arrays类 5.大数据运算 01基本数据类型对象包装类概述 *A:基本数据类型对象包装类概述 *a.基本类型包装类的产生 ...
- 7、包装类、System、Math、Arrays、大数据运算
基本类型封装 基本数据类型对象包装类概述 *A:基本数据类型对象包装类概述 *a.基本类型包装类的产生 在实际程序使用中,程序界面上用户输入的数据都是以字符串类型进行存储的.而程序开发中,我们需要把字 ...
- 基本类型包装类、System类、Math类、Arrays类、大数据运算
1 基本类型包装类 Java中想对8种基本数据类型进行复杂操作很困难. 实际程序界面上用户输入的数据都是以字符串类型进行存储的. 程序开发中,需要把字符串转换成指定的基本数据类型. 1.1基本数据类型 ...
- 常用API(包装类、System、Math、Arrays、大数据运算)
常用API 今日内容介绍 u 基本类型包装类 u System u Math u Arrays u BigInteger u BigDecimal 第1章 基本类型包装类 大家回想下,在第二天我们学习 ...
- java基础(17):包装类、System、Math、Arrays、大数据运算
1. 基本类型包装类 大家回想下,在第三篇文章中我们学习Java中的基本数据类型时,说Java中有8种基本的数据类型,可是这些数据是基本数据,想对其进行复杂操作,变的很难.怎么办呢? 1.1 基本类型 ...
随机推荐
- 1.linux概述及如何访问
1.linux终端访问及退出 1.1访问 linux有7个终端:(1个真实终端+6个虚拟终端) ctril+alt+Fn (Fn是指F1\F2..)切换终端 1.2退出: shutdown 缓冲一会关 ...
- ASCII 码表
下面的 ASCII 码表包含数值在0-127之间的字符的十进制.八进制以及十六进制表示. 十进制 八进制 十六进制 字符 描述 0 0 00 NUL 1 1 01 SOH start of hea ...
- Arduino CNC Shiled 和 DRV8825驱动板的注意事项
首先说明硬件:1) Arduino CNC Shiled V2.6 2)DRV8825驱动板 3)光驱步进电机 4)Arduino uno R3 下图是本次主角是Arduino CNC Shile ...
- c++11: bind用法
原型: template< class R, class F, class... Args > bind( F&& f, Args&&... args ); ...
- CentOS6.4安装LAMP环境
1.配置防火墙,开放80.3306端口 vi /etc/sysconfig/iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport - ...
- 关于LINQ一个简单例子
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Cons ...
- 【WinForm】“System.Data.SqlClient.SqlConnection”的类型初始值设定项引发异常,无法识别的配置节 system.serviceModel
出现问题的原因: 在本机上没有出现问题,让一个同事测试的时候,在另外一台电脑上出现连接数据库失败,系统不能打开的问题 在网上搜了一下,有说是数据库连接字符串错误的,有说app.config文件配置不匹 ...
- [JS进阶] 编写可维护性代码 (1)
今天的web应用大至成千上万行的javascript代码,执行各种复杂的过程,这种演化让我们开发者必须得对可维护性有一定的认识!编写可维护性代码很重要,很多情况下我们是以他人的工作成果为基础,确保代码 ...
- Mac上安装brew
用过ubuntu系统的都知道,上面有一个命令apt-get 很方便可以快速的安装很多软件 特别lamp环境 都是一键安装. 在mac上也有类似的命令 brew brew用法可以访问官网地址 http ...
- 定位表的数据块并且dump出来
SQL> select * from city; ID NAME ---------- ---------- 7 Chicago 6 Jers ...