博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
网易笔试
阅读量:4686 次
发布时间:2019-06-09

本文共 3100 字,大约阅读时间需要 10 分钟。

牛牛去犇犇老师家补课,出门的时候面向北方,但是现在他迷路了。虽然他手里有一张地图,但是他需要知道自己面向哪个方向,请你帮帮他。

输入描述:
每个输入包含一个测试用例。 每个测试用例的第一行包含一个正整数,表示转方向的次数N(N<=1000)。 接下来的一行包含一个长度为N的字符串,由L和R组成,L表示向左转,R表示向右转。

输出描述:
输出牛牛最后面向的方向,N表示北,S表示南,E表示东,W表示西。

 

输入例子1:
3LRR

 

输出例子1:
E
#include 
using namespace std;char s[1005];char dir[4]="NESW";int main(){ int n; cin>>n; cin>>s; int now=0; for(int i=0;i

 

#include
#include
using namespace std; void printDirection(int num){ switch(num%4){ case -3: cout << 'E' <
> n){
string inStr; int dir = 0; cin >> inStr; for(int i=0; i

  

牛牛以前在老师那里得到了一个正整数数对(x, y), 牛牛忘记他们具体是多少了。

但是牛牛记得老师告诉过他x和y均不大于n, 并且x除以y的余数大于等于k。

牛牛希望你能帮他计算一共有多少个可能的数对。

输入描述:
输入包括两个正整数n,k(1 <= n <= 10^5, 0 <= k <= n - 1)。

输出描述:
对于每个测试用例, 输出一个正整数表示可能的数对数量。

 

输入例子1:
5 2

 

输出例子1:
7

 

例子说明1:
满足条件的数对有(2,3),(2,4),(2,5),(3,4),(3,5),(4,5),(5,3)
朴素的做法是枚举n^2个点然后跟k作比较。这显然对n<=100000的规模来说是不允许通过的。
注意到当除数是y时,当x=1~n时,余数是1,2,3,...,y-1,0循环出现,循环节长度显然是y
那么我们可以枚举y=k~n(当y<k时所有余数均小于k,因此不需要考虑)
然后对于x=1~n,总共出现了[n/y]个循环节,然后数出每个循环节里面不小于k的余数。最后再数出不满一个循环节的不小于k的余数,就是答案了。注意当k=0的时候由于余数0出现在循环的末尾,因此要特别判断。
复杂度为O(n)
#include 
#include
using namespace std; int main(){ long long n,k; cin>>n>>k; long long ans=0; for(int y=max(1LL,k);y<=n;++y) { int res=0; res=n/y*(y-k); if(n%y>=k) if(k) res+=n%y-k+1; else res+=n%y; ans+=res; } cout<
<

 

给你一些序列1,12,123,1234,12345,123456,1234567,12345678,123456789,12345678910,1234567891011,.....给你两个数字a,b,问第a个序列到第b个序列之间能被三整除的数的个数。

解题思路:发现规律,每三个序列为一组1,12,123,第一个数不能被3整除,第二个第三个数能被三整除,1234,12345,123456,第一个数不能被三整除,第二个和但三个数能被三整除。

#include 
int main() { int t; scanf("%d",&t); int kcase=1; while(t--) { int a,b; scanf("%d%d",&a,&b); int tmp1=b/3;//找到前面有多少组3 tmp1=tmp1*2;//每组有两个能被三整除 if(b%3==2)//看这个数本身能否被3整除,即排在该组的第二个数 { tmp1=tmp1+1; } int tmp2=a/3;//同上 tmp2=tmp2*2; if(a%3==2) { tmp2=tmp2+1; } int ans=tmp1-tmp2; if(a%3==0||a%3==2)//如果是第三个数或第二个数,那么多减了a这个数,那么补上去 { ans++; } printf("Case %d: %d\n",kcase++,ans); } return 0; }

 

思路:该题涉及的数字比较大,不能直接用整形或是长整型来存储数字,可以用字符串来存储数字,判定能否被3整除的方法就是看将数字各位的数相加得到的数能否被3整除。

#include
#include
using namespace std;bool divide(string str) { int num = 0; for (int i = 0; i < str.length(); i++) { num += (str[i] - ‘0‘); } if (num % 3 == 0) { return true; } return false;}int main() { int l = 0, r = 0, count = 0; string num = ""; cin >> l >> r; for (int i = 1; i <= l; i++) { num += to_string(i); } for (int i = l; i <= r; i++) { if (divide(num)) count++; num += to_string(i + 1); } cout << count << endl; return 0;}

 

转载于:https://www.cnblogs.com/moon290/p/8661622.html

你可能感兴趣的文章
深度信任网络的快速学习算法(Hinton的论文)
查看>>
RSA System.Security.Cryptography.CryptographicException
查看>>
s的封装和信息隐蔽
查看>>
excelhttp://www.cnblogs.com/caoyuanzhanlang/p/3591904.html
查看>>
ArrayList和LinkedList和Vector源码分析
查看>>
webservice整合spring cxf
查看>>
再次编译这个应用程序应该不会有问题
查看>>
Ubuntu-tomcat7目录
查看>>
189. Rotate Array
查看>>
使用ASP.Net WebAPI构建REST服务(六)——Self-Host
查看>>
asp.net 的三种开发模式
查看>>
Android 交叉编译 IPerf3
查看>>
Android原生Gallery关于图像Orientation的问题
查看>>
Android开发之ViewPager
查看>>
【NOIP2017】列队【可持久化线段树】
查看>>
python学习——通过while循环语句实现九九乘法表的四种表达方式
查看>>
[解题报告] 100 - The 3n + 1 problem
查看>>
MvvmCross[翻译] 使用Xamarin与MvvmCross完成一个跨平台App
查看>>
Entity Framework 学习高级篇1—改善EF代码的方法(上)
查看>>
027-chown命令
查看>>