小紫的总分
题目描述
登录—专业IT笔试面试备考平台_牛客网
运行代码
#include<iostream>
using namespace std;
int main(){int a,b,c,d,e,sum;cin>>a>>b>>c>>d>>e;sum=a+b+c+d+e;if(sum>100){
cout<<"YES";}else cout<<"NO";return 0;
}
代码思路
数学思想,一个简单的数学题
小蓝的旅游
题目描述
登录—专业IT笔试面试备考平台_牛客网
运行代码
#include<iostream>
using namespace std;
int main(){int n,m;cin>>n>>m;if (n % 2 == 0||n%2==1&&m%2==1)cout<<"YES";else if(n%2==1&&m%2==0)cout<<"NO";return 0;
}
代码思路
首先,分析是否存在哈密顿路径的条件。
- 当
n
和m
都是奇数时,肯定不存在,因为无法不重复地遍历所有点并到达终点。 - 当
n
或m
中有一个为 1 且另一个大于 1 时,也不存在,因为这样会导致某些点无法遍历到。
如果不满足以上这些不能存在的情况,那么就认为存在哈密顿路径。
小粉的“好数”
题目描述
登录—专业IT笔试面试备考平台_牛客网
运行代码
#include <iostream>
using namespace std;
bool Number(int num) {int d = 0;int t = num;while (t > 0) {d += t% 10;t /= 10;}if (d % 2 == 0 && (d >= num || (d< num && Number(d)))) {return true;}return false;
}
int count(int n) {int count = 0;for (int i = 1; i <= n; i++) {if (Number(i)) {count++;}}return count;
}
int main() {int n;cin >> n;int s = count(n);cout << s << endl;return 0;
}
代码思路
-
Number(int num)
函数:- 输入:一个整数
num
- 功能:判断该整数是否满足上述条件。
- 首先,计算
num
的各位数字之和d
。 - 然后检查
d
是否为偶数,以及是否满足条件2(即d >= num
或者在不满足时递归调用Number(d)
直到找到满足条件的数)。 - 如果满足所有条件,则返回
true
,否则返回false
。
- 首先,计算
- 输入:一个整数
-
count(int n)
函数:- 输入:一个整数
n
- 功能:计算从1到
n
之间有多少个整数满足Number
函数定义的条件。- 通过遍历1到
n
之间的每个数,对每个数调用Number
函数,并根据返回值累加计数器count
。 - 最后返回计数器的值,即满足条件的整数总数。
- 通过遍历1到
- 输入:一个整数
-
main()
函数:- 功能:读取用户输入的一个整数
n
,调用count(n)
函数计算满足条件的整数数量,并输出结果。
- 功能:读取用户输入的一个整数
小黑的区间
题目描述
登录—专业IT笔试面试备考平台_牛客网
运行代码
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=1e5+5;
int i,j,k,n,m,t,a[N],l;
ll r;
int main(){ios::sync_with_stdio(0); cin.tie(0);cin>>n>>m; l=1;for(i=1;i<=n;i++){cin>>k;if(a[k]&&i-a[k]>m){l=max(l,a[k]+1); }a[k]=i;r+=i-l+1;}cout<<r;
}
代码思路
- 首先定义了一些变量,包括数组
a
用于记录每个颜色上次出现的位置。 - 通过遍历输入的气球颜色序列。
- 对于当前颜色
k
,如果它之前已经出现过(a[k]
不为 0)且当前位置与上次出现位置的间隔大于m
,那么就更新起始的有效区间位置l
为上次出现位置加 1。 - 同时更新
a[k]
为当前位置。 - 每次计算当前位置到起始位置
l
的区间长度i-l+1
并累加到结果r
中。 - 最后输出总的完美区间数量
r
。
动态记录每个颜色的位置和不断调整有效区间的起始位置,来计算满足条件的完美区间的数量。
小绿的房子
题目描述
登录—专业IT笔试面试备考平台_牛客网
运行代码
#include<iostream>
using namespace std;
const int N=2e5+5;int count[N];
struct edge{int t,next;
} E[N];
int head[N],cnt=1;// 添加边的函数
void add(int v,int t)
{count[v]++;E[cnt].t=t;E[cnt].next=head[v];head[v]=cnt++;
}// 计算节点相关总边数的函数
int calculateTotalEdges(int node) {int all = count[node] + 1;for (int j = head[node]; j!= 0; j = E[j].next)all += count[E[j].t] - 1;return all;
}int main()
{int n;cin>>n;for(int i=1;i<n;i++){int a,b;cin>>a>>b;add(a,b);add(b,a);}int ans=0;for(int i=1;i<=n;i++){int totalEdges = calculateTotalEdges(i);if (totalEdges == n) ans++;}cout<<ans<<endl;return 0;
}
代码思路
- 这段代码主要是构建了一个图的结构,并通过一些计算来统计满足特定条件的节点数量。
count[N]
用于记录每个节点的关联边数。edge
结构体表示边,包含目标节点和下一条边的指针。add
函数用于添加边,并更新相关计数和链表。- 在
main
函数中,输入节点数n
后构建图,然后通过遍历计算每个节点相关的总边数,判断是否满足特定条件来统计结果。