poj 1001 Exponentiation

Exponentiation

Time Limit: 500MS

Memory Limit: 10000K

Total Submissions: 109780

Accepted: 26662

Description

Problemsinvolving the computation of exact values of very large magnitude and precisionare common. For example, the computation of the national debt is a taxingexperience for many computer systems. 

This problem requires that you write a program to compute the exact value of Rn where R is a real number ( 0.0 < R <99.999 ) and n is an integer such that 0 < n <= 25.

Input

The inputwill consist of a set of pairs of values for R and n. The R value will occupycolumns 1 through 6, and the n value will be in columns 8 and 9.

Output

The outputwill consist of one line for each line of input giving the exact value of R^n.Leading zeros should be suppressed in the output. Insignificant trailing zerosmust not be printed. Don't print the decimal point if the result is an integer.

Sample Input

95.123 12

0.4321 20

5.1234 15

6.7592  9

98.999 10

1.0100 12

Sample Output

548815620517731830194541.899025343415715973535967221869852721

.00000005148554641076956121994511276767154838481760200726351203835429763013462401

43992025569.928573701266488041146654993318703707511666295476720493953024

29448126.764121021618164430206909037173276672

90429072743629540498.107596019456651774561044010001

1.126825030131969720661201

Hint

If youdon't know how to determine wheather encounted the end of input: 
s is a string and n is an integer 

 

求幂

Time Limit: 500MS

Memory Limit: 10000K

Total Submissions: 109780

Accepted: 26662

Description

涉及高精度计算的问题是很常见的. 比如说,计算国债,就是一项费力的工程
这个问题要求你写个程序来计算Rn ,其中R是个实数( 0.0 <R < 99.999 ),n是个整形数(0 < n<= 25)

Input

输入将包含几组数据,R和n。R占6列,n占第8,9列

Output

输出将对每一组数据计算出一个R^n 。开头和尾巴的零应该省略,如果是整形数,不应该有小数点存在。

Sample Input

95.123 12

0.4321 20

5.1234 15

6.7592  9

98.999 10

1.0100 12

Sample Output

548815620517731830194541.899025343415715973535967221869852721

.00000005148554641076956121994511276767154838481760200726351203835429763013462401

43992025569.928573701266488041146654993318703707511666295476720493953024

29448126.764121021618164430206909037173276672

90429072743629540498.107596019456651774561044010001

1.126825030131969720661201

Hint

If youdon't know how to determine wheather encounted the end of input: 
s is a string and n is an integer 

 

这代码重新写的看起来好看点依然很破,求高速算法…….

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
void Exponen(char *s, int n, char *res);
void Output(char *res, int point);
void init(char *s, int *point);
void multi(char *res, char*s);
 
int main()
{
   char s[6];
    char res[555];
   int n;
 
   freopen("in.txt", "r", stdin);
   while(~scanf("%s %d", s, &n)){
       //puts("o");
       Exponen(s,n,res);
    }
 
   return 0;
}
 
void init(char *s, int *point){
   int k = 5, p = 0, i;
   char s1[6];
   while((*(s+k))=='0')  {k--;}//消除小数点后多余的0
   for (i = k;i >= 0; i--){//记录小数点位置,并将处理后的数给一个新字符串。
       if (s[i] == '.'){
           *point = i;
           (*point) = k - (*point);
           //printf("%d\n", *point);
       }else{
           s1[p++] = s[i];
        }
    }
   s1[p] = 0;
   p--;
   while(*(s1+p)=='0') {*(s1+p) = 0;p--;}//消除最前面的多余的0
   strcpy(s, s1);//拷贝回s
}
 
void multi(char *res, char*s){
   int i, j;
   int p, q, k, cnt;
   char temp[555]={0};
    p= 0;q = 0;
   while(p != strlen(s)){
       k = p;
       cnt = 0;
       while(q != strlen(res)){
           *(temp + k) += (*(res + q)-'0') * (*(s + p)-'0') + cnt;
           //printf("\n");
           //printf("here = %d, k = %d, pro = %d, next = %d\n", *(temp +k), k, *(res + q)-'0', *(s + p)-'0');
           cnt = *(temp + k) / 10;
           *(temp + k) %= 10;
           k ++;
           q ++;
       }
       *(temp + k) += cnt;//最后一个进位要加上
       q = 0;
       p ++;
    }
 
   //printf("\n");
   for (i = 0;i <= k;i ++){
        temp[i]+='0';
    }
   if (*(temp + k) != '0')
       temp[k+1] = 0;
   else temp[k] = 0;
   strcpy(res, temp);
}
 
void Exponen(char *s, int n, char *res){
   int i, point=-1, pointt;
   init(s, &point);//初始化字符串,方便运算
 
   strcpy(res, s);//res作为主串
   //printf("%s\n", res);
 
   pointt = point;
   //printf("%d\n", pointt);
   for (i = 0;i < n -1;i ++){
       point += pointt;
    }
   //printf("point = %d\n", point);
   for (i = 0; i < n - 1;i ++){
       multi(res,s);
       //printf("res=%s\n", res);
    }
   Output(res, point);
   //printf("%s\n", res);
}
 
void Output(char *res, int point){
   int len = strlen(res);
   int p, ps;
   if (len >= point){//长度大于
       //point = len - point;
       ps = len;p = len-1;
       while((ps != -1) && (p != -1)){
           if (ps == point){
                putchar('.');ps--;
           }else {
                printf("%c",*(res+p));p--;ps--;
           }
       }
   }else{
       putchar('.');
       p = point;
       while(p != 0){
           if (p > len){
                putchar('0');p--;
           }else{
                p--;
                printf("%c",*(res+p));
           }
       }
 
    }
   putchar('\n');
}


基于径向基函数神经网络RBFNN的自适应滑模控制学习(Matlab代码实现)内容概要:本文介绍了基于径向基函数神经网络(RBFNN)的自适应滑模控制方法,并提供了相应的Matlab代码实现。该方法结合了RBF神经网络的非线性逼近能力和滑模控制的强鲁棒性,用于解决复杂系统的控制问题,尤其适用于存在不确定性和外部干扰的动态系统。文中详细阐述了控制算法的设计思路、RBFNN的结构与权重更新机制、滑模面的构建以及自适应律的推导过程,并通过Matlab仿真验证了所提方法的有效性和稳定性。此外,文档还列举了大量相关的科研方向和技术应用,涵盖智能优化算法、机器学习、电力系统、路径规划等多个领域,展示了该技术的广泛应用前景。; 适合人群:具备一定自动控制理论基础和Matlab编程能力的研究生、科研人员及工程技术人员,特别是从事智能控制、非线性系统控制及相关领域的研究人员; 使用场景及目标:①学习和掌握RBF神经网络与滑模控制相结合的自适应控制策略设计方法;②应用于电机控制、机器人轨迹跟踪、电力电子系统等存在模型不确定性或外界扰动的实际控制系统中,提升控制精度与鲁棒性; 阅读建议:建议读者结合提供的Matlab代码进行仿真实践,深入理解算法实现细节,同时可参考文中提及的相关技术方向拓展研究思路,注重理论分析与仿真验证相结合。
先展示下效果 https://pan.quark.cn/s/a4b39357ea24 本项目是本人参加BAT等其他公司电话、现场面试之后总结出来的针对Java面试的知识点或真题,每个点或题目都是在面试中被问过的。 除开知识点,一定要准备好以下套路: 个人介绍,需要准备一个1分钟的介绍,包括学习经历、工作经历、项目经历、个人优势、一句话总结。 一定要自己背得滚瓜烂熟,张口就来 抽象概念,当面试官问你是如何理解多线程的时候,你要知道从定义、来源、实现、问题、优化、应用方面系统性地回答 项目强化,至少与知识点的比例是五五开,所以必须针对简历中的两个以上的项目,形成包括【架构和实现细节】,【正常流程和异常流程的处理】,【难点+坑+复盘优化】三位一体的组合拳 压力练习,面试的时候难免紧张,可能会严重影响发挥,通过平时多找机会参与交流分享,或找人做压力面试来改善 表达练习,表达能力非常影响在面试中的表现,能否简练地将答案告诉面试官,可以通过给自己讲解的方式刻意练习 重点针对,面试官会针对简历提问,所以请针对简历上写的所有技术点进行重点准备 Java基础 JVM原理 集合 多线程 IO 问题排查 Web框架、数据库 Spring MySQL Redis 通用基础 操作系统 网络通信协议 排序算法 常用设计模式 从URL到看到网页的过程 分布式 CAP理论 锁 事务 消息队列 协调器 ID生成方式 一致性hash 限流 微服务 微服务介绍 服务发现 API网关 服务容错保护 服务配置中心 算法 数组-快速排序-第k大个数 数组-对撞指针-最大蓄水 数组-滑动窗口-最小连续子数组 数组-归并排序-合并有序数组 数组-顺时针打印矩形 数组-24点游戏 链表-链表反转-链表相加 链表-...
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值