第一题:

        题目:数三角形

        

        思路:

首先需要明确,在题目中给出了两个关键点

  • 面积为整数

  • 三角形不同

比如:测试用例中的3,则是表示直角边的最大值为3,这时我们就有(1,2)、(2,2)、(2,3)满足条件。

对于面积为整数,即ab/2为整数,要使得ab/2为整数,那么a*b必须是偶数,所以这个题就转化为了a*b的值为偶数,那么就可以满足条件,并且要保证三角线不同。

所以题目求解,变成了从1-n之间的数中,找出两个数的乘机为偶数的个数。

        代码:

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

第二题

        题目:幂和数

                

        思路:

第二题中,就是想要求在输入的l和r两个数之间,有多少个数能够满足2的x次方加上2的y次方的结果在l和r之间,那么我们可以使用两层循环来给x和y赋值,如果在l和r之间的话那么结果就加1。

但是,需要注意如果x和y颠倒的情况下,肯定是一种可能,不要算成两种可能了,所以这里使用i,j进行循环的时候,一定要注意内层循环的j一定是从i开始的

        代码:

#include<bits/stdc++.h>
using namespace std;
int main() {
	int l,r,ans=0;
	cin>>l>>r;
	for(int n=l; n<=r; n++) {
		int flag=1;
		for(int x=0; x*x<=n&&flag; x++) {
			for(int y=x; y*y<=n; y++) {
				if((1<<x)+(1<<y)==n) {
					ans++;
					flag=0;
					break;
				}
			}
		}
	}
	cout<<ans;
}

      

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐