再战128

经过一个暑假的集训,试试集训的效果
看看当年折磨人的128
再次写完需要多久呢?

写麻了,写了87道,休息一下,等心情好再写(滑稽)

时间表

1 9.5晚 22道 –30min
2 9.6早 18道 –150min
3 9.6晚 8道 –180min
4 9.7 5道 –60min
5 9.7晚 14道 –180min
6 9.8 17道 –180min

一些离谱的错误

1.没搞懂的三点一线
2.if 短路原则
3.1218 solve 输出超限
4.ll 超时 改 int 100ms过

1112 三点共线

题意:给你平面上三个点的坐标,请判断三点是否共线。
直接判断斜率k1==k2错了,应该把这个分式转换成乘积的形式,减少出错。
abs只适用于整形,double要用fabs
但是目前不知道错在哪了。。。。。。。。

1078 字母三角形

题意:输出形如
ABCDEDCBA
ABCDCBA
ABCBA
ABA
A
的字母三角形。
代码写得挺好看的(嘿嘿,写的代码比之前好多了 思路很清晰

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include<bits/stdc++.h>
#pragma comment(linker, "/STACK:102400000,102400000")//解决递归函数多次调用栈溢出问题
using namespace std;
#define Debug(x) cout<<#x<<':'<<x<<endl
#define INF 0x7fffffff//10^9级别,不到2^32
typedef long long ll;
const ll maxn=2e5+11;
void out1(ll n){
for(ll i=0;i<n;i++) cout<<" ";
}
void out2(ll n){
for(ll i='A';i<n;i++) printf("%c",i);
printf("%c",n);
for(ll i=n-1;i>='A';i--) printf("%c",i);
}
int main(){
// ios::sync_with_stdio(false);
// cin.tie(0);
char c;ll step=1;
while(cin>>c){
if(c=='#') break;
cout<<"case "<<step++<<":"<<endl;
for(ll i='A';i<=c;i++){
out1(i-'A');
out2(c-(i-'A'));
cout<<endl;
}
}
return 0;
}

1189 root

题意:求方程 (x+a)/(x+b) = c的非负整数根,其中a,b,c都是非负整数。
又寄了,烦死了。
wa了还是得好好想想呐,不要急,锻炼自己找bug能力,积累debug经验。

1223 Repeat One

题目:求由最小的一个N,N个数码1组成的数能被M整除? 比如M=3时,111能被3整除。M=2时,则不存在这样的N。
一道有点意思的题目,但是放到数组里不合适吧,跟数组毛线关系都没有的,误导新手
方法自己是想出来了的,但是超时了,自己应该自信点,毕竟很大的一个样例都对了,就不要怀疑是方法的问题
555,又忍不住看了答案
但是这道题自己想复杂了,n=(10n+1)%x就行,*因为模x对结果无影响。
tle了是因为常数开大了,每次循环都是maxn,改成n就过了。吸取教训!!!

1247 Robb’s Problem

题意:Robb想知道阶乘n!第m位数码是什么?
居然有大数模拟是我没想到的,随便写下吧,不是很感兴趣,算了,挺恶心人的,懒得写了
用java套大数就完事了

1270 Unique Digit Number

题意:数位不同的数是指所有数位上的数码都不一样的数,比如“123”三个数码1,2,3,都不一样,所以是数位不同的数;但是“1232”中有两个相同的数码2,所以不是。请写一个程序,计算第几个符合条件的数是什么?

这是当时自己觉得最难的几道题目之一了吧,现在如今自己也能写出来了
关键在于记录每个数用了哪些数字,以及把这个数的记录信息传到下一个数,这个时候就需要用到数位了。
有一说一,用数位存数还是挺巧妙的,就是把一个数,看作一个数组。比如一个int数,有32位对吧,
那么它就是一个长度为32的数组,只不过这个数组的每位只能存0和1,不过对这道题而言够了,只需要标记状态用0和1就够了
这样子的话,无论是记录状态,还是传递状态,都很快速。

1108 a+b

题目:请计算a+b,但a和b是按不同的进制给出的。进制最小为2进制,最大为62进制,其中使用A-Z依次表示10到35,a-z表示36-61。请写出a+b的结果,结果按十进制输出。 输入 第一行是一个整数N,表示有多少个测试样例,以后每行是一个样例,每行是4个部分,分别为a的值,a的进制,b的值,b的进制。其中值都是用一个字符串表示,进制都是一个整数。4个部分之间用一个空格隔开,保证输入的合法,a、b和a+b的值都在-2^31到2^31-1之间。 输出 每行输出一个样例的结果。

醉死,我先把字符串转化为数字,然后用sr.length()算字符串长度,但是我没有注意到,将字符串转化的数字中,有0,那么再用sr.length()就会出错,本地跑没有问题,一交上去就出错了。。。

1378 blocks

简单的DP,但无奈我PD蒟蒻,状态都写出来了,就差状态转移方程,居然没写出来。。