问题 A: 分数矩阵
2024-09-27 05:14:42
题目描述
我们定义如下矩阵:
1/1 1/2 1/3
1/2 1/1 1/2
1/3 1/2 1/1
矩阵对角线上的元素始终是1/1,对角线两边分数的分母逐个递增。
请求出这个矩阵的总和。
1/1 1/2 1/3
1/2 1/1 1/2
1/3 1/2 1/1
矩阵对角线上的元素始终是1/1,对角线两边分数的分母逐个递增。
请求出这个矩阵的总和。
输入
输入包含多组测试数据。每行给定整数N(N<50000),表示矩阵为N*N。当N=0时,输入结束。
输出
输出答案,结果保留2位小数。
样例输入
1
2
3
4
0
样例输出
1.00
3.00
5.67
8.83 这题就是一个规律题
#include<stdio.h>
int main ()
{
int n;
int i;
double sum;
while(scanf("%d",&n),n)
{
sum=;
sum+=n*;
for (i=;i<=n;i++)
{
sum+=1.0/i*(n-i+)*;
}
printf ("%.2f\n",sum);
}
return ;
}
用算法笔记上的写法时间超限了
#include<bits/stdc++.h> using namespace std;
struct Fraction
{
int up,down;//分子 分母
//Fraction(){}
Fraction(int _up=,int _down=):up(_up),down(_down){}
};
int gcd(int a,int b)
{
if(b==) return a;
return gcd(b,a%b);
}
Fraction reduction(Fraction result)//分数的化简
{
if(result.down<){//分母为负数,令分子和分母都变为相反数
result.down=-result.down;
result.up=-result.up;
}
if(result.up==) result.down=;//如果分子为0 分母为1
else{//约去最大公约数
int d=gcd(abs(result.up),abs(result.down));
result.up/=d;
result.down/=d;
}
return result;
}
int main()
{
int n;
while(scanf("%d",&n)==&&n!=){
Fraction s[n*n+];
for(int i=;i<=n;i++){
s[n*(i-)+i].up=;
s[n*(i-)+i].down=;
} for(int i=;i<=n;i++){
for(int j=;j<=n;j++){
if(i!=j){
if(j>i){
s[n*(i-)+j].down=s[n*(i-)+j-].down+;
s[n*(i-)+j].up=;
}
}
}
}
for(int i=;i<=n;i++){
for(int j=;j<=n;j++){
if(j<i){
s[n*(i-)+j].down=s[n*n+-n*(i-)-j].down;
s[n*(i-)+j].up=;
}
}
}
Fraction c;
c.down=s[].down;
c.up=s[].up;
for(int i=;i<=n*n;i++){
c.up=s[i].up*c.down+c.up*s[i].down;
c.down=s[i].down*c.down;
c=reduction(c);
cout<<c.up<<" "<<c.down<<endl;
}
printf("%.2f\n",1.0*c.up/c.down);
}
return ;
}
分数的四则运算就是我们正常的四则运算
最新文章
- MD5编码工具类 MD5Code.java
- android事件分发机制
- W3School-CSS测验
- 生成短链(网址) ShortUrlLink
- TCP的几个状态
- C#之串口
- 用with实现python的threading,新鲜啊
- openfire+asmack搭建的安卓即时通讯(五) 15.4.12
- T 恤
- Node.js权威指南 (7) - 实现基于TCP与UDP的数据通信
- kill session真的能杀掉进程吗
- tmux environment keep
- [C++程序设计]全局,局部变量
- CSS.06 -- 尚合网页模拟
- swift 录制多个音频 并将音频转换为mp3 并合成多个mp3文件为一个文件
- Android Training
- org.springframework.transaction.CannotCreateTransactionException: Could not open Hibernate Session for transaction; nested exception is org.hibernate.exception.JDBCConnectionException: Cannot open con
- <;Android基础>;(二) Activity Part 2
- 【Java线程安全】 — 常用数据结构及原理(未完结)
- 事件Event实现消费者模型
热门文章
- 【luogu P1113 杂务】 题解
- 【luogu P1536 村村通】 题解
- java基础知识一览
- 【题解】洛谷P1002过河卒
- html、css和js原生写一个模态弹出框,顺便解决父元素半透明子元素不透明效果
- 大白话解释IP多播
- 29.You executed the following command to perform a backup of the USERS tablespace:
- C++ push方法与push_back方法
- z-blog博客组插件openSug.js百度搜索下拉框提示代码
- ZooKeeper(1)-入门