“玲珑杯”ACM比赛 Round #11

网友投稿 781 2022-09-02

“玲珑杯”ACM比赛 Round #11

“玲珑杯”ACM比赛 Round #11

A题:

思路:暴力一下就行,用long long,不然有可能会溢出,最好用C++,Java有时候正确,有时候编译错误

AC代码

#include #include #include #include #include #include #include #include #include #include #include const int inf = 0x7f7f7f7f;//2139062143typedef long long ll;using namespace std;int main(){ ll a,b,n; while (scanf("%I64d%I64d%I64d",&a,&b,&n) != EOF) { int index = 0; ll min1 = LONG_LONG_MAX; for (int i=1; i<=n; i++) { if (n % i == 0) { ll sum = n / i * a + b * n * i; if (sum < min1) { min1 = sum; index = i; } } } printf("%d\n",index); } return 0;}

D题:

思路:标称上是打表,我是用一个数组进行标记的,只要以前出现过这个数就退出,不然肯定会陷入死循环

AC代码:

#include #include #include #include #include #include #include #include #include #include #include const int inf = 0x7f7f7f7f;//2139062143typedef long long ll;using namespace std;int getSum(int n){ int sum = 0; while (n != 0) { int temp = n % 10; sum += temp * temp; n /= 10; } return sum;}int main(){ int n; int a[10000]; while(scanf("%d",&n) != EOF) { int sum = n; memset(a,0,sizeof(a)); bool flag = false; while (true) { sum = getSum(sum); if (sum == 1) { flag = true; break; } if (a[sum] > 0) break; a[sum] = 1; } if (flag) cout << "YES" << endl; else cout << "NO" << endl; }}

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Linux 系统故障排查和修复技巧(linux关机命令)
下一篇:分库分表?如何做到永不迁移数据和避免热点?(分库分表 数据迁移)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~