热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

西工大NOJ数据结构实验——1.2高精度计算PI值

#include#include#include#includetypedefstructNODE

#include
#include
#include
#include
typedef struct NODE{int n;int power;struct NODE* pre;struct NODE* next;
}NODE;
void PiCreateAndInitial(NODE* head,int m) {//创建双向循环链表,并且初始化链表 int tempx=m;NODE* temp = head;for (;m>=0;m--){NODE* p = (NODE*)malloc(sizeof(NODE));if (p) {if(m==tempx){p->n=1;}else{p->n=0;}p->power=m-tempx;temp->next = p;p->pre=temp;temp = p;}}temp->next=head;head->pre=temp;
}
void PiOutput(NODE* head,int m) {//链表的遍历 char s[520]={0};char *sp=s;NODE* p = head->next;while ((m--)>=0) {*sp=(p->n)+48;sp=sp+1;if((p->power)==0){*sp='.';sp=sp+1;}p = p->next;}printf("%s\n",s);
}
void PiMultiply(NODE* head,int n){//大数乘一个整数 int Cin=0;NODE* p=head->pre;while(p!=head){p->n=(p->n)*n+Cin;Cin=(p->n)/10;p->n=(p->n)%10;p=p->pre;}
}
void PiDivide(NODE* head,int n){//大数除一个整数 int temp=0;NODE* p=head->next;while(p!=head){temp=(p->n)%n;p->n=(p->n)/n;(p->next)->n=(p->next)->n+10*temp;p=p->next;}
}
void PiAdd(NODE* head1,NODE* head2){//把累加的结果保存下来 NODE* p1=head1->pre;NODE* p2=head2->pre;int Cin=0;while(p1!=head1){p2->n=(p2->n)+(p1->n)+Cin;Cin=(p2->n)/10;p2->n=(p2->n)%10;p1=p1->pre;p2=p2->pre;}
}
int main(){int m;scanf("%d",&m);//完成题目的唯一输入要求 NODE* head1&#61;(NODE*)malloc(sizeof(NODE));NODE* head2&#61;(NODE*)malloc(sizeof(NODE));head1->next&#61;head1->pre&#61;NULL;head2->next&#61;head2->pre&#61;NULL;if(head1&&head2){PiCreateAndInitial(head1,750);PiCreateAndInitial(head2,750);for(int n&#61;1;n<&#61;5000;n&#43;&#43;){int temp&#61;2*n&#43;1;PiDivide(head1,temp);PiMultiply(head1,n);PiAdd(head1,head2);}PiMultiply(head2,2);PiOutput(head2,m);}return 0;
}


推荐阅读
  • A题这题贼水,直接暴力就可以了。用个bool数组记录一下,如果某一天,当前剩下的最大的出现了的话,就输出一段。1#include<stdio.h>2intn;3boolvi ... [详细]
  • java解析json转Map前段时间在做json报文处理的时候,写了一个针对不同格式json转map的处理工具方法,总结记录如下:1、单节点单层级、单节点多层级json转mapim ... [详细]
  • 本题涉及一种由Chip和Dale设计的文本加密方法。该方法通过预先约定的矩阵行数和列数,将字符转换为特定的二进制形式,并以螺旋方式填充矩阵。最终将矩阵中的二进制数连接成一个字符串,实现加密。 ... [详细]
  • 短视频app源码,Android开发底部滑出菜单首先依赖三方库implementationandroidx.appcompat:appcompat:1.2.0im ... [详细]
  • 本文探讨了 TypeScript 中泛型的重要性和应用场景,通过多个实例详细解析了泛型如何提升代码的复用性和类型安全性。 ... [详细]
  • iOS snow animation
    CTSnowAnimationView.hCTMyCtripCreatedbyalexon1614.Copyright©2016年ctrip.Allrightsreserved.# ... [详细]
  • 本文介绍了 Python 中的基本数据类型,包括不可变数据类型(数字、字符串、元组)和可变数据类型(列表、字典、集合),并详细解释了每种数据类型的使用方法和常见操作。 ... [详细]
  • 题目描述:给定一个区间,支持两种操作:1. 将位置a的值修改为b;2. 查询区间[a, b]内的子序列的最大和,其中子序列中相邻的元素必须具有不同的奇偶性。 ... [详细]
  • 本文介绍了如何在 Spring Boot 项目中使用 spring-boot-starter-quartz 组件实现定时任务,并将 cron 表达式存储在数据库中,以便动态调整任务执行频率。 ... [详细]
  • 普通树(每个节点可以有任意数量的子节点)级序遍历 ... [详细]
  • Leetcode学习成长记:天池leetcode基础训练营Task01数组
    前言这是本人第一次参加由Datawhale举办的组队学习活动,这个活动每月一次,之前也一直关注,但未亲身参与过,这次看到活动 ... [详细]
  • Docker 环境下 MySQL 双主同步配置指南
    本文介绍了如何在 Docker 环境中配置 MySQL 的双主同步,包括目录结构的创建、配置文件的编写、容器的创建与设置以及最终的验证步骤。 ... [详细]
  • 本文介绍了 NOI Open Judge 6049 购书问题的详细解法,代码简洁易懂,并附有详细的注释和解释。 ... [详细]
  • 为什么多数程序员难以成为架构师?
    探讨80%的程序员为何难以晋升为架构师,涉及技术深度、经验积累和综合能力等方面。本文将详细解析Tomcat的配置和服务组件,帮助读者理解其内部机制。 ... [详细]
  • C语言中全部可用的数学函数有哪些?2.longlabs(longn);求长整型数的绝对值。3.doublefabs(doublex);求实数的绝对值。4.doublefloor(d ... [详细]
author-avatar
默念我覀想你A_193
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有