【校队+实验班】萌新训练赛【1】

[NOIP2009]多项式输出

题目描述

一元n次多项式可用如下的表达式表示:

f (x) = anxn+ an-1xn-1 + ... + a1x + a0,a0≠0

其中,aixi 称为i 次项,ai 称为i次项的系数。给出一个一元多项式各项的次数和系数,请按照如下规定的格式要求输出该多项式:

1. 多项式中自变量为x,从左到右按照次数递减顺序给出多项式。

2. 多项式中只包含系数不为0的项。

3. 如果多项式n次项系数为正,则多项式开头不出现“+”号,如果多项式 n 次项系数为负,则多项式以“-”号开头。

4. 对于不是最高次的项,以“+”号或者“-”号连接此项与前一项,分别表示此项系数为正或者系数为负。紧跟一个正整数,表示此项系数的绝对值(如果一个高于0 次的项,其系数的绝对值为1,则无需输出1)。如果x的指数大于1,则接下来紧跟的指数部分的形式为“x^b”,其中b为x的指数;如果x的指数为1,则接下来紧跟的指数部分形式为“x”;如果x的指数为0,则仅需输出系数即可。

5. 多项式中,多项式的开头、结尾不含多余的空格。

输入描述:

第一行1个整数,n,表示一元多项式的次数。
第二行有n+1 个整数,其中第i 个整数表示第n-i+1 次项的系数,每两个整数之间用空格隔开。

输出描述:

共1行,按题目所述格式输出多项式。

示例1

输入

5
100 -1 1 -3 0 10

输出

100x^5-x^4+x^3-3x^2+10

输入

3
-50 0 0 1

输出

-50x^3+1

备注:

1≤n≤100,多项式各次项系数的绝对值均不超过100。

#include<bits/stdc++.h>
using namespace std;
int main(){
	int n ;
	cin >> n;
	int a[n + 1];
	for(int i = n;i >= 0;i -- ) cin >> a[i];
	for(int i = n;i >= 0;i -- ){//注意:n次多项式有n + 1项
		if(a[i]){//系数不为0
			if(i != n && a[i] > 0) cout << '+';//非首项且系数大于0
			if((a[i] != -1 && a[i] != 1) || i == 0) cout << a[i];//系数不是正负1或为常数项
			if(a[i] == -1 && i != 0) cout << '-';//-1的非零次指数特判
			if(i == 1) cout << 'x';//一次指数
			if(i > 1) cout << "x^"<< i;//二次及以上指数
		}
	}
	return 0;
}

[NOIP2008]火柴棒等式

题目描述

给你n根火柴棍,你可以拼出多少个形如“A+B=C”的等式?等式中的A、B、C是用火柴棍拼出的整数(若该数非零,则最高位不能是0)。用火柴棍拼数字0-9的拼法如图所示:

注意:

1. 加号与等号各自需要两根火柴棍

2. 如果A≠B,则A+B=C与B+A=C视为不同的等式(A、B、C>=0)

3. n根火柴棍必须全部用上

输入描述:

共一行,又一个整数n(n<=24)。

输出描述:

共一行,表示能拼成的不同等式的数目。

示例1

输入

14

输出

2

说明

2个等式为0+1=1和1+0=1。

示例2

输入

18

输出

9

说明

9个等式为:
0+4=4
0+11=11
1+10=11
2+2=4
2+7=9
4+0=4
7+2=9
10+1=11
11+0=11
#include<bits/stdc++.h>
using namespace std;
const int N = 1e3 + 10;
int a[10] = {6,2,5,5,4,5,6,3,7,6};
int cal(int n){
	int num = 0;
	for(int i = n;i != 0;i /= 10) num += a[i % 10];
	
	if(n == 0) num += a[0];
	return num;
}
int main(){
	int n;
	cin >> n;
	int ans = 0;
	for(int i = 0;i <= N;i ++ ){
		for(int j = 0;j <= N;j ++ ){
			int k = i + j;
			if(cal(i) + cal(j) + cal(k) + 2 + 2 == n) ans ++ ;
		}
	}
	cout <<ans;
}

[NOIP2012]质因数分解

题目描述

已知正整数n是两个不同的质数的乘积,试求出较大的那个质数。

输入描述:

输入只有一行,包含一个正整数n。

输出描述:

输出只有一行,包含一个正整数p,即较大的那个质数。

示例1

输入

21

输出

7

备注:

对于60%的数据,6≤n≤1000。

对于100%的数据,6≤n≤2*109。

#include <bits/stdc++.h>
using namespace std;
int main() {
    int n;
    cin >> n;
    for (int i = 2; i <= n; i ++ ){
    	if(n % i == 0){ 
		    cout << n / i;
    	    break;
		}
    }
    return 0;
}

 [NOIP2001]数的计算

题目描述

我们要求找出具有下列性质数的个数(包含输入的自然数n):
先输入一个自然数n(n ≤ 1000),然后对此自然数按照如下方法进行处理:
1.不作任何处理;
2.在它的左边加上一个自然数,但该自然数不能超过原数的一半;
3.加上数后,继续按此规则进行处理,直到不能再加自然数为止.

输入描述:

1个自然数n( n ≤ 1000 )

输出描述:

示例1

输入

6

输出

6

#include<bits/stdc++.h>
using namespace std;
const int N = 1e3 + 10;
int main(){
	int n;
    cin >> n;
    int a[N] = {0};//千万别忘赋初值!!牛客不能写a[n]
    for(int i = 1;i <= n;i ++ ){ 
        for(int j = 1;j <= i / 2;j ++ ){
			a[i] += a[j];
        } 
        a[i] ++ ;
    }
    cout << a[n];
    return 0;
}


 

[NOIP2014]珠心算测试

题目描述

珠心算是一种通过在脑中模拟算盘变化来完成快速运算的一种计算技术。珠心算训练,既能够开发智力,又能够为日常生活带来很多便利,因而在很多学校得到普及。

某学校的珠心算老师采用一种快速考察珠心算加法能力的测验方法。他随机生成一个正整数集合,集合中的数各不相同,然后要求学生回答:其中有多少个数,恰好等于集合中另外两个(不同的)数之和?

最近老师出了一些测验题,请你帮忙求出答案

输入描述:

输入共两行,第一行包含一个整数 n ,表示测试题中给出的正整数个数。
第二行有 n 个正整数,每两个正整数之间用一个空格隔开,表示测试题中给出的正整数。

输出描述:

输出共一行,包含一个整数,表示测验题答案。

示例1

输入

4
1 2 3 4

输出

2

说明

由 1+2=3,1+3=4 ,故满足测试要求的答案为 2 。
注意,加数和被加数必须是集合中的两个不同的数。

备注:

对于 100% 的数据, 3 ≤ n ≤ 100 ,测验题给出的正整数大小不超过 10,000 。
#include<bits/stdc++.h>
using namespace std;
const int N = 1e6 + 10;//数组千万别开小了。
int main(){
	int n;
	cin >> n;
	int a[n + 1] ,test[N];
	for(int i = 1;i <= n;i ++ ) {
		cin >> a[i];
		test[a[i]] = 1;
	}
	int ans = 0;
	for(int i = 1;i < n;i ++ ){
		for(int j = i + 1;j <= n;j ++ ){
			if(test[a[i] + a[j]]){
				ans ++ ;
				test[a[i] + a[j]] = 0;
			}
		}
	}
	cout << ans;
	return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

那就随便一点

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值