ACM Greater New York 2017 补题

A - Chanukah Challenge

题意:水题不解释了

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

B - Sum Squared Digits Function

题意:

给定b,n
n和b符合如下要求
image

求SSD(b,n)
思路:

  • 先由n,b求a
    • 一看应该就想起来:求2进制,用类似方法退出a就行了
  • 由a得出SSD即可。
    代码:
#include <bits/stdc++.h>
using namespace std;
int main(){
int t;
cin>>t;
while(t--){
int k,b,n;
cin>>k>>b>>n;
long long ans=0;
int a;
while(n){
a=n%b;
ans+=a*a;
n/=b;
}
cout<<k<<" "<<ans<<endl;
}
return 0;
}

J - Toys

题意:
约瑟夫环问题
给定:所有玩具的数目和每次排除第几位
求解:最后留下第几位的玩具
思路:
大神约瑟夫环讲解
代码:

#include <bits/stdc++.h>
using namespace std;
int f(int n, int m){
if(n == 1) return n;
return (f(n - 1, m) + m - 1) % n + 1;
}
int main(){
int n,k;
cin>>n>>k;
cout<<f(n,k)-1<<endl;
return 0;
}

E - Best Rational Approximation

题意:
有P个数据,对于每个数据
输入:编号K,分母最大值M,待求小数x
要求:求一个最接近x的分母不大于M的分数。
思路:
法里数列板子题;

法里数列:
数列的每一项都是相邻两项的中间分数
例如:
0/1 1/1

0/1 1/2 1/1

0/1 1/3 2/3 1/1..
中间产生的分数的分母/分子是前一项与后一项的分母/分子之和。

用二分法找
最后比一下两个分数的小数部分那个更接近题目所给的那个小数

代码:

#include <bits/stdc++.h>
using namespace std;
int main(){
int t;
cin>>t;
while(t--){
int k;
long long m;
double p;
cin>>k>>m>>p;
int ans1=0,ans2=1;//初始前一项
int an1=1,an2=1;//初始后一项
while(1){
int x2=ans1+an1;
int y2=ans2+an2;
if(y2>m) break;
if(x2*1.0/y2<=p){//二分
ans1=x2;
ans2=y2;
}
else {
an1=x2;
an2=y2;
}
}
if(abs(ans1*1.0/ans2-p)>abs(an1*1.0/an2-p)){
ans1=an1;
ans2=an2;
}
cout<<k<<" "<<ans1<<"/" <<ans2<<endl;
}
return 0;
}

本文作者:kingwzun

本文链接:https://www.cnblogs.com/kingwz/p/15612380.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   kingwzun  阅读(34)  评论(0编辑  收藏  举报
编辑推荐:
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
阅读排行:
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· 【.NET】调用本地 Deepseek 模型
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
· 上周热点回顾(2.17-2.23)
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起