【高精度】Vijos P1010 清帝之惑之乾隆

题目链接:

  https://vijos.org/p/1010

题目大意

  多组数据,求R的n次幂(R为不超过9999.9的小数 n<=200)R保证占6位

  不输出前导0和后缀0,整数就只输出整数部分

题目思路:

  【高精度】

  直接用double算是肯定不行的。毕竟精度要求那么高。

  做法是先记下最终要输出的小数位数,然后把这个小数放大到6位,接下来算个高精度的幂之后处理一下输出就行了

  1 //
  2 //by coolxxx
  3 //
  4 #include<iostream>
  5 #include<algorithm>
  6 #include<string>
  7 #include<iomanip>
  8 #include<memory.h>
  9 #include<time.h>
 10 #include<stdio.h>
 11 #include<stdlib.h>
 12 #include<string.h>
 13 #include<stdbool.h>
 14 #include<math.h>
 15 #define min(a,b) ((a)<(b)?(a):(b))
 16 #define max(a,b) ((a)>(b)?(a):(b))
 17 #define abs(a) ((a)>0?(a):(-(a)))
 18 #define lowbit(a) (a&(-a))
 19 #define sqr(a) (a)*(a)
 20 #define swap(a,b) (a)^=(b),(b)^=(a),(a)^=(b)
 21 #define eps 1e-8
 22 #define MAX 0x7f7f7f7f
 23 #define J 10
 24 #define PI 3.1415926535897
 25 #define N 1504
 26 using namespace std;
 27 int n,m,lll,ans,cas;
 28 char s[10];
 29 int a[N];
 30 void gjdchengdjd()
 31 {
 32     int i;
 33     a[0]+=6;
 34     for(i=1;i<=a[0];i++)
 35         a[i]*=ans;
 36     for(i=1;i<=a[0];i++)
 37     {
 38         a[i+1]+=a[i]/J;
 39         a[i]%=J;
 40     }
 41     while(a[a[0]+1])a[0]++;
 42     while(!a[a[0]])a[0]--;
 43 }
 44 int main()
 45 {
 46     #ifndef ONLINE_JUDGE
 47 //  freopen("1.txt","r",stdin);
 48 //  freopen("2.txt","w",stdout);
 49     #endif
 50     int i,j,k;
 51     while(~scanf("%s%d",s,&n))
 52     {
 53         memset(a,0,sizeof(a));
 54         ans=0;
 55         for(i=0;i<6;i++)
 56         {
 57             if(s[i]!=‘.‘)
 58                 ans=ans*10+s[i]-‘0‘;
 59             else lll=5-i;
 60         }
 61         lll*=n;
 62         if(n==0)
 63         {
 64             puts("1");
 65             continue;
 66         }
 67         a[0]=a[1]=1;
 68         for(i=1;i<=n;i++)
 69             gjdchengdjd();
 70         for(i=1;i<=lll;i++)
 71             if(a[i]==0)a[i]=-1;
 72             else break;
 73         if(a[0]>lll)
 74         {
 75             for(i=a[0];i>lll && a[i]==0;i--);
 76             for(;i>lll;i--)
 77                 printf("%d",a[i]);
 78             if(a[lll]!=-1)
 79             {
 80                 printf(".");
 81                 for(i=lll;i && a[i]!=-1;i--)
 82                     printf("%d",a[i]);
 83             }
 84         }
 85         else
 86         {
 87             printf(".");
 88             for(i=lll;i>a[0];i--)
 89                 printf("0");
 90             for(i=a[0];i && a[i]!=-1;i--)
 91                 printf("%d",a[i]);
 92         }
 93         puts("");
 94     }
 95     return 0;
 96 }
 97
 98
 99 /*
100 //
101
102 //
103 */

时间: 2024-08-11 09:56:03

【高精度】Vijos P1010 清帝之惑之乾隆的相关文章

vijos 1009 清帝之惑之康熙

清帝之惑之康熙 背景 康熙是中国历史乃至世界历史中最伟大的帝王之一,清除螯拜,撤除三藩,统一台湾,平定准葛尔叛乱:与此同时,出众的他也被世界各国遣清使臣所折服.康熙是历史上少有的全人,不仅文武兼得,而且在各各方面都有见地,比如说航海.数学.英语.构图.建筑等等.一个最好的例子可以证明:康熙当年演算代数题的草稿纸至今仍然保存完好. 话说康熙掌权之后,每天都抽空做数学题,特别是无聊题.这些天,某某老师开始教他做一些奇怪的题目.在第一节课的时候,老师就问了康熙一个超BT的题目: 描述 话说西汉时期,汉

【动态规划】Vijos P1011 清帝之惑之顺治

题目链接: https://vijos.org/p/1011 题目大意: 给一张N*M的地图(N,M<=500),可从任一点开始沿上下左右走,只能走比当前低的地方.问最长能走多少格. 题目思路: [动态规划] 这题就是滑雪,动态规划. 将高度排序后从低往高算,当前高度所在的格子上下左右比当前高度低就可以用来更新答案. 1 // 2 //by coolxxx 3 // 4 #include<iostream> 5 #include<algorithm> 6 #include&l

【扩展欧几里德】Vijos P1009 清帝之惑之康熙

题目链接: https://vijos.org/p/1009 题目大意: 两个人,一个在坐标x,每天走m,一个在坐标y,每天走n,坐标长L,问几天后碰面. 题目思路: [扩展欧几里德] 根据同余方程的ax+by=c,可以得出a=n-m,b=l,c=x-y 之后扩展欧几里得求线性同余方程. 题目数据较大需要使用long long 1 // 2 //by coolxxx 3 // 4 #include<iostream> 5 #include<algorithm> 6 #include

【枚举】Vijos P1012 清帝之惑之雍正

题目链接: https://vijos.org/p/1012 题目大意: 给n个坐标(n<=100 000),求直线距离最短是多少.数据较大用long long 或 double 题目思路: [枚举] 正解貌似是分治,不过我一看就暴力枚举+剪枝了. 先按x y为第一.第二关键字排序. 设当前最优解为c,如果当前的点对x坐标差的平方比最优解大就可以break了. 1 // 2 //by coolxxx 3 // 4 #include<iostream> 5 #include<algo

JDOJ-1194: VIJOS-P1009 清帝之惑之康熙

1194: VIJOS-P1009 清帝之惑之康熙 Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 376  Solved: 122[Submit][Status][Web Board] Description 话说西汉时期,汉武帝刘彻派遣张骞出使西域,欲同月氏国结交而共驱匈奴.同时,月氏国也欲同大汉结交,也派出使者康破伦出使大汉,可是因为月氏国对于大汉的认知甚少,康破伦同样向西出使大汉.一开始,张骞从大汉出发,康破伦从月氏国出发,两人都在同一纬度线

【VIJOS】 p1009-p1012 清帝之惑

原题传送门:https://vijos.org/p/%E6%B8%85%E5%B8%9D%E4%B9%8B%E6%83%91 雍正 求平面上最近的两点的距离,O(nlogn)算法实现,详解见 http://blog.csdn.net/lytning/article/details/25370169 #include <iostream> #include <cstdio> #include <cstdlib> #include <cstring> #incl

大神刷题表

9月27日 后缀数组:[wikioi3160]最长公共子串 dp:NOIP2001统计单词个数 后缀自动机:[spoj1812]Longest Common Substring II [wikioi3160]最长公共子串 [spoj7258]Lexicographical Substring Search 扫描线+set:[poj2932]Coneology 扫描线+set+树上删边游戏:[FJOI2013]圆形游戏 结论:[bzoj3706][FJ2014集训]反色刷 最小环:[poj1734

[转]献给迷茫的大多数

网易陕西省西安市网友 [3308只信仰公平] 的原贴:1 人生在世,都是为了生存,不但要生存还要更幸福的生存.美女.香车.豪宅,贤妻.爱女.情人,总之,幸福生活是人人都向往的,这是每个人最基本的权利和追求,这就是人权. 但是,要想实现这一切,都需要钱,都需要财富作为基础.没有财富,别说幸福生活就连自由你都没有.你整天为了生存去打工,为了糊口,更为了养活一家子,孩子的奶粉和学费,老家还要盖房子,农村的父母还要赡养,这一切的一切,就像一条无形的锁链,把你牢牢的“栓”在工厂生产流水线上,想去旅游?把你

10分钟掌握2000年历史,秦朝到清朝皇帝世系表,一目了然

摘要:中国有2000多年的封建历史,从第一个皇帝秦始皇算起,有记载的皇帝多达500多位.为了更清楚直观的了解每个朝代的皇帝传承,作者将他们绘制成表,呈现给喜欢历史的读者.(包括魏晋南北朝.五代十国) 秦朝:公元前221年,秦王嬴政攻灭六国,统一天下,自称始皇帝,是历史上第一个皇帝.秦始皇死后,儿子胡亥继承皇位,由宦官赵高把持朝政.秦二世的暴政引起了大规模的农民起义,公元前207年,秦王子婴向刘邦投降,秦朝灭亡.秦朝共传二世,建国仅仅14年. 西汉:开国皇帝刘邦,出身小吏,是个不折不扣的流氓.在秦