HDU4432-第37届ACM/ICPC天津现场赛B题
来源:互联网 发布:淘宝营业执照怎么办理 编辑:程序博客网 时间:2024/06/10 17:15
题目:题目链接
这道题目是一道水题,而我却卡了好久,太囧(/ □ \)了。
题目是说给你一个数字n,让你找到n的因子,把所有的因子转换成m进制。然后对每一位求平方和。再把最后的和转变
成m进制表示。输出就OK。
刚开始写,就直接写了转变函数。然后就枚举因子,1-n。可是一直tle。后来改成1-sqrt(n).就是WA,自己一直在看前
面的,没有注意后面的输出。弄了好久还是WA。最后,SB了。才发现自己在输出的时候竟然没有考虑m大于9的情况,这
时候是需要用字母表示的,而我去一直在用数字表示,SB了。唉.代码:
#include <iostream>#include <cstdio>#include <string>#include <string.h>#include <map>#include <vector>#include <cstdlib>#include <cmath>#include <algorithm>#include <queue>#include <set>#include <stack>using namespace std;int n, m;#define N 1000001int mx[N];int len;void getm(int x){ int i = 0; while(x > 0) { int tp = x%m; mx[i++] = tp; x /= m; } len = i;}int main(){ while(scanf("%d%d", &n, &m) == 2) { int sum = 0; for(int i = 1; i <= sqrt(n)+1; ++i) { if(n%i==0) { int tmp=i; while(tmp) { sum+=((tmp%m)*(tmp%m)); tmp/=m; } tmp=n/i; if(tmp==i) continue; while(tmp) { sum+=((tmp%m)*(tmp%m)); tmp/=m; } } } memset(mx, 0, sizeof(mx)); getm(sum); for(int i=len-1; i>=0; i--) { if(mx[i]>9) printf("%c",mx[i]-10+'A'); else printf("%d",mx[i]); } printf("\n"); } return 0;}
后面超时我就把转变函数放进main里面了,大家可以试试直接调用getm函数,看能不能过...
努力努力...
- HDU4432-第37届ACM/ICPC天津现场赛B题
- HDU 4431 Mahjong 第37届ACM/ICPC 天津赛区现场赛A题
- ACM/ICPC 2012 天津 B题
- HDU4472-第37届ACM/ICPC成都现场赛I题
- Substrings 第37届ACM/ICPC 杭州赛区现场赛C题(hdu 4455)
- HDU 4455 Substrings 第37届ACM/ICPC 杭州赛区现场赛 C题 (DP)
- ACM/ICPC 14 北京站现场赛 B
- 2012 天津站B题||hdu4432 进制转换 模拟
- 2011 ACM/ICPC 北京现场赛 B HouYi's secret
- HDU 5510 2015ACM-ICPC沈阳赛区现场赛B题
- ACM现场赛天津站小结
- 2017年第42届ACM-ICPC亚洲区域赛青岛赛区(现场赛)
- 2014 ACM-ICPC牡丹江现场赛K题题解
- 2016/41届ACM/ICPC大连现场赛D题&hdoj5974
- 2012 ICPC/ACM 成都现场赛 Candy
- ACM-ICPC现场赛管理员指南
- 2015 ACM/ICPC 长春现场赛
- 2015 ACM/ICPC 沈阳现场赛
- 外部表(oracle)
- xls----->sql
- flex4 动态获取对象属性,动态生成数据源,动态生成lineChart,清除数据。
- Android弹出多选框下拉框的实例
- 求一个字符串中连续出现次数最多的子串
- HDU4432-第37届ACM/ICPC天津现场赛B题
- IOS开发之路-Objective-C 集合上(笔记)
- HDU 2196 Computer(树形dp经典)
- HDU1009 FatMouse' Trade
- 黑马程序员-------.NET知识基础(第一天)
- 通过PL/SQL导入excel文件
- linux基础学习笔记(持续更新ING)
- poj 1236 强连通+缩点
- lr学习笔记2:创建场景