第一次 AtCoder 体验,不是很好。
A Recursive Function
大水题。只要会递归就会做。
点击查看代码
#include <cstdio>
#include <iostream>
#define ll long long
using namespace std;
inline ll re(){;
register ll f=1ll,k=0;
register char ch=getchar();
while(!isdigit(ch)){
if(ch=='-') f=-1;
ch=getchar();
}
while(isdigit(ch)){
k=(k<<1ll)+(k<<3ll)+(ch^48ll);
ch=getchar();
}
return 1ll*k*f;
}
void wr(ll x){
if(x<0){
x=~x+1;
putchar('-');
}
if(x>9) wr(x/10ll);
putchar(x%10ll^48ll);
}
ll n;
ll f(int k){
if(k==0) return 1;
return k*f(k-1);
}
signed main(){
// freopen(".in","r",stdin);
// freopen(".out","w",stdout);
n=re();
wr(f(n));
return 0;
}
Broken Rounding
考场上英语读题 + 码力导致花了好长时间。
我们每次对 \(x\) 的最后一位 \(num\) 进行分析,首先先对 \(x/10^{i-1}\),对于每一个 \(num=x\%10\),如果 \(i\) 是小于 \(5\) 的,那么就在处理后的 \(x\) 基础上减去 \(num\),否则就在处理后的 \(x\) 基础上加上 \(10-num\)。这样的操作后,我们又在 \(x\) 的基础上重新乘上 \(10^{i-1}\) 即可。直到 \(i=k\) 时,算法结束,输出答案即可。
点击查看代码
#include <cmath>
#include <cctype>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <iostream>
#include <algorithm>
#define ll long long
using namespace std;
ll x,k;
inline ll re(){;
ll f=1ll,k=0;
char ch=getchar();
while(!isdigit(ch)){
if(ch=='-') f=-1;
ch=getchar();
}
while(isdigit(ch)){
k=(k<<1ll)+(k<<3ll)+(ch^48ll);
ch=getchar();
}
return 1ll*k*f;
}
void wr(ll x){
if(x<0){
x=~x+1;
putchar('-');
}
if(x>9) wr(x/10ll);
putchar(x%10ll^48ll);
}
signed main(){
// freopen(".in","r",stdin);
// freopen(".out","w",stdout);
x=re(),k=re();
ll ten=1;
for(int i=1;i<=k;++i){
x/=ten;
ll num=x%10;
if(num<5)
x-=num;
else
x+=(10-num);
x*=ten;
ten*=10;
}
wr(x);
return 0;
}
明日再更
原文地址:http://www.cnblogs.com/WXDreemurr/p/16795258.html
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,请务用于商业用途!
3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员!
8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载
声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性