这是我第一次参加NOIP普及组的初赛,可是没想到竟然扣了37.5分,37.5!!!我顿时感觉自己完了。
回到正题
来看看我怎么扣的:
选择题:
- 在 8 位二进制补码中,10101011 表示的数是十进制下的( )。
A. 43 B. -85 C. -43 D. -84
首先,我看到补码后第一时间找第一位,发现是1,第一反应是负数
大家注意!!这就是学习没学好的后果!
补码是反码加1后的结果,反码才要注意第一位
然后我就不去管反码是什么东东了……
原式=0101011-1=0101010=1010101=85
再加个负号,就是B了,而我却选了C
基础不打好害死人!!
之后的题目就不用说了,还是上面。
问题求解:
以哥的基础,无脑过。
说明我还是有点实力的。
程序填空:
#include<iostream>
using namespace std;
int main()
{
int t[256]; string s;
int i;
cin>>s;
for (i = 0; i < 256; i++) t[i] = 0;
for (i = 0; i < s.length(); i++) t[s[i]]++;
for (i = 0; i < s.length(); i++)
if (t[s[i]] == 1)
{
cout << s[i] << endl;
return 0;
}
cout << "no" << endl;
return 0;
}
输入: xyzxyw
输出:
第一题,很简单,但是我却掉进坑里了
1.我没注意是(t[s[i]]==1),以为是(t[s[i]]>=1)
2.判断是依据s这个字符串往下的,我以为是按照字母表顺序查找的
傻乎乎地写了w……
这个故事告诉我们不应该草率地看题目,草率地写下结果。
#include <iostream>
using namespace std;
int main()
{
int n, m;
cin>>n>>m;
int x = 1;
int y = 1;
int dx = 1;
int dy = 1;
int cnt = 0;
while (cnt != 2)
{
cnt = 0;
x = x + dx;
y = y + dy;
if (x == 1 || x == n)
{
++cnt;
dx = -dx;
}
if (y == 1 || y == m)
{
++cnt;
dy = -dy;
}
}
cout << x << " " << y << endl;
return 0;
}
输入 1 : 4 3
输出 1:_________(3 分)
输入 2:2017 1014
输出 2:_________(5 分)
挺简单的,可惜我犯了一个世界上最低级的错误
这是输出循环结束后双方的结果
一看就懂
我写了它们循环的次数……
完善程序:
1.快速幂
#include <iostream>
using namespace std;
int x, p, m, i, result;
int main()
{
cin >> x >> p >> m;
result = (1) ;
while ( (2) )
{
if (p % 2 == 1)
result = (3) ;
p /= 2;
x = (4) ;
}
cout << s << endl;
return 0;
}
我们可“歌”可“泣”的学姐考前亲自讲了一遍,自然全对
忽然对这世界充满了信心
2.切绳子
#include <iostream>
using namespace std;
int n, m, i, lbound, ubound, mid, count;
int len[100]; // 绳子长度
int main()
{
cin >> n;
count = 0;
for (i = 0; i < n; i++)
{
cin >> len[i];
(1) ;
}
cin >> m;
if ( (2) )
{
cout << "Failed" << endl;
return 0;
}
lbound = 1;
ubound = 1000000;
while ( (3) )
{
mid = (4) ;
count = 0 ;
for (i = 0; i < n; i++)
(5) ;
if (count < m) ubound = mid - 1;
else
lbound = mid;
}
cout << lbound << endl;
return 0;
}
起初:又是二分,模板没记住,应该要死
结果错了(2)题
这一题是我经过长时间的深思熟虑
和苦思冥想之中
得出了自己以为的正确答案
然后把真正的正确答案删了……
突然对世界充满绝望