梯形

排版题-梯形

a 夏天 提交于 2019-12-01 07:11:20
题目描述:   输入一个高度h,输出一个高度为h,上底边为h的梯形 样例输入: 4 样例输出: **** ****** ******** ********** #include<stdio.h> int main() { int h; while(scanf("%d",&h)!=EOF) { int max=h+(h-1)*2; for(int i=1;i<=h;i++) { for(int j=1;j<=max;j++) { if(j<max-h-(i-1)*2+1) { printf(" "); } else { printf("*"); } } printf("\n"); } } return 0; } 来源: https://www.cnblogs.com/womendouyiyang/p/11666820.html

XJOI复赛模拟11

这一生的挚爱 提交于 2019-12-01 05:05:26
A.Trape 背景 : 一个平面上有许多点,LYH需要在这个平面上画一个等腰梯形,LYH希望在这个梯形内的点尽可能得多,LYH让你帮她求梯形内最大点数。(点在梯形边上也算梯形内) 题目描述 : 给出M个点求用一个上底长25,下底长75,高50的等腰梯形最多能框住的点数。 输入格式 : 第一行两个正整数N,M,N表示横坐标在[-N,N],纵坐标在[-N,N]的平面大小, M表示点数。 接下来M行,每行两个整数x,y,为各个点的横纵坐标。 输出格式 : 一行一个正整数为最大点数。 数据范围 : 60% N<=150 80% M<=300 90% M<=3000 100% N<=2500 M<=10000 -N<=x,y<=N Solution : 题意没写清楚,这个梯形一定是上下底平行于x轴且是正的(上底在上面)。 可以枚举底边左端点所在的纵坐标 \(m\) ,然后对于每个点 \((x[i],y[i])\) 将它们分别对应到 \(y=m\) 上(在 \(x[i]-(y[i] + m)/2\) 处 \(-1\) ,在 \(x[i]+(y[i]-m)/2-75\) 处 \(+1\) ,表示在该位置有一个点进入或退出梯形),然后求一个最大的前缀和即可 Code : #pragma GCC optimize(3,"Ofast","inline") #include<bits/stdc++.h

复化梯形公式求积分

怎甘沉沦 提交于 2019-11-30 05:53:09
# include <iostream> # include <cmath> using namespace std ; double X [ 1000 ] ; //保存生成的节点横坐标 double Y [ 1000 ] ; //保存生成的节点纵坐标 //定义一个数学函数 double fun ( double x ) { return 4 / ( 1 + x * x ) ; } //分割区间 void Devide ( double a , double b , int N ) { double x ; double dx = ( b - a ) / ( N ) ; for ( int i = 0 ; i <= N ; i ++ ) { x = a + i * dx ; X [ i ] = x ; Y [ i ] = fun ( x ) ; } } //复化梯形求积 double GetIntegralValue ( double a , double b , int N ) { double sum = 0 ; double value ; //求2*f(xk)的总和,1<= k <= n-1 for ( int i = 1 ; i <= N - 1 ; i ++ ) { sum + = 2 * Y [ i ] ; } value = 0.5 * ( ( b - a ) /