非非.Net的个人博客

岂能因声音微小而不呐喊

2010年5月25日 #

2010网易有道编程挑战赛--练习赛

去年参加了网易公司的“有道难题”编程大赛,当时是在Topcoder平台举行,由于当时自己第一次参加这样的比赛连资格赛都没有过,2个题目完成一个,剩下另一个时间已经来不及了,今年网易公司又举行了“有道难题”编程大赛,我再次报名了,这次的目标争取过资格赛吧。看了一下这次的练习赛题目,感觉不是太难,由于错过了练习赛比赛的时间,我将自己的答案写在这里,供大家参考一下吧,个人水平有限,如有错误或更好的方法,请指正。谢谢!

题目A: A + B


描述
计算a加b。
输入
一行,用空格分开的两个整数a和b。其中0≤a, b≤10000。
输出
一个整数,为a加b的和。
样例输入
1 2
样例输出
3
答案(GNU C)
#include <stdio.h>
int main()
{
    
int a,b;
    scanf(
"%d %d",&a, &b);
    printf(
"%d\n",a+b);
    
return 0;
}

题目B:Power


描述
计算a的b次方对9907取模的值。
输入
第一行有一个正整数T,表示有T组测试数据。
接下来T行,每行是一组测试数据,包含两个整数a和b。
其中T<=10000, 0 <=a,b < 2^31。
输出
有T行,依次输出每组数据的结果。
样例输入
3
1 2
2 3
3 4
样例输出
1
8
81
答案(GNU C)
代码
#include <stdio.h>
#include 
<math.h> 

int main()
{
    
int length, i, a, b, z;
    scanf(
"%d",&length);  //get length
    int r[length];  //result array
    for(i=0;i<length;i++)
    {
        scanf(
"%d %d"&a, &b);
        z 
= pow(a,b);
        r[i] 
= z % 9907;    
    }
    
for(i=0;i<length;i++)
    {
        printf(
"%d\n",r[i]);  //output result
    }
    
return 0;
}

题目C:Sibonacci


描述
菲波那切数列可以用下列的式子表示:
f(1)=1
f(2)=1
f(n)=f(n-1)+f(n-2) (n>=3)

现在我们根据这个规则定义另一种数列 命名为"辛波那切数列", 它是这样定义的:
s(x)=0 (x<0)
s(x)=1 (0<=x<1)
s(x)=s(x-1)+s(x-3.14) (x>=1)

现在需要计算出s(x) MOD 1000000007的值。
输入
第一行有一个正整数T表示有T组测试数据。
接下来T行,每行包含一个数x。
其中 T<=10000, -1000.0<=x<=1000.0
输出
有T行,依次输出每组数据的结果。
样例输入
3
-1
0.667
3.15
样例输出
0
1
2
答案(GNU C)
代码
#include <stdio.h>
#include 
<math.h> 

float sibonacci(float x)
{
    
return (x<0)? 0 : (0 <= x && x < 1? 1 : sibonacci(x-1+ sibonacci(x-3.14);
}

int main()
{
    
int length, i;
    
float z, x;
    scanf(
"%d",&length);  //get length
    int r[length];  //result array
    for(i=0;i<length;i++)
    {
        scanf(
"%f"&x);
        z 
= sibonacci(x);
        r[i] 
= fmod(z,1000000007);    
    }
    
for(i=0;i<length;i++)
    {
        printf(
"%d\n",r[i]);  //output result
    }
    
return 0;
}

如果有任何问题希望与我交流,也欢迎大家访问我的博客:http://www.527474.com 谢谢

posted @ 2010-05-25 15:49 非非.Net 阅读(1096) 评论(7) 编辑

2010年5月19日 #

使用C#循环链表解决约瑟夫环的问题

前几日看到一个关于约瑟夫环的面试题,于是试着动手做了一下,没有采用.Net类库的LinkedList类,自己实现了一个循环链表结构,然后模拟游戏过程得出结果。

具体代码如下:

代码
class Program
    {
        
static void Main(string[] args)
        {
            
const int HUMAN_MAX = 17;
            
const int HUMAN_INDEX = 3;
            
const int HUMAN_NUMBER = 0;
 
            LinkTable
<Human> list = new LinkTable<Human>();
            
for (int i = 0; i < HUMAN_MAX; i++)
            {
                list.Add(
new Human(i));
            }
 
            Human human 
= list.First;
            
int number = HUMAN_NUMBER;
            
do
            {
                
if (number == HUMAN_INDEX)
                {
                    number 
= 0;
                    Console.WriteLine(human.ID);
                    list.Remove(human);
                }
                
else
                {
                    number
++;
                    human 
= (Human)human.Next;
                }
            }
            
while (human.Next != human);
            Console.WriteLine(human.ID);
 
            Console.Read();
        }
 
        
public class Human : LinkTableNode {
            
public Human(int id){
                
this.ID = id; 
            }
            
public int ID{get;set;}
        }
 
        
/// <summary>
        
/// 圆环链表
        
/// </summary>
        
/// <typeparam name="T"></typeparam>
        public class LinkTable<T> where T : LinkTableNode
        {
            
public List<T> list = new List<T>();
 
            
public T First
            {
                
get
                {
                    
return list.Count > 0 ? list[0] : default(T);
                }
            }
 
            
public void Add(T t)
            {
                t.Previous 
= list.Count == 0 ? t : list[list.Count - 1];
                t.Next 
= list.Count == 0 ? t : list[0];
                
if (list.Count > 0)
                {
                    list[
0].Previous = t;
                    t.Previous.Next 
= t;
                }
                list.Add(t);
            }
 
            
public void Remove(T t)
            {
                
int i = list.IndexOf(t);
                
if(list.Count == 1)
                {
                    list.Remove(t);
                }
                
else
                {
                    t.Previous.Next 
= t.Next;
                    t.Next.Previous 
= t.Previous;
                }
            }
        }
 
        
/// <summary>
        
/// 链表节点
        
/// </summary>
        public class LinkTableNode
        {
            
/// <summary>
            
/// 下一个节点
            
/// </summary>
            public LinkTableNode Next
            {
                
get;
                
set;
            }
 
            
/// <summary>
            
/// 上一个节点
            
/// </summary>
            public LinkTableNode Previous
            {
                
get;
                
set;
            }
        }
    }

 

 

posted @ 2010-05-19 20:53 非非.Net 阅读(234) 评论(0) 编辑

2010年3月16日 #

【原创】免费获取三年MSDN订阅用户资格

微软推出了一项Microsoft WebsiteSpark计划,该计划针对那些为他人开发Web应用和Web网站的独立Web开发设计者和Web开发设计公司。这项计划为参与者免费提供为期三年的相关的微软软件,服务和商业资源。有基于此,参与者可以应用ASP.NET、Silverlight、SharePoint 和 PHP,以及一些开源的应用程序得到更强大的Web解决方式。

Microsoft WebsiteSpark 计划中提供三年授权的软件包括:

3 份 Visual Studio 2008 专业版授权

1 份 Expression Studio 3(包括 Expression Blend, Sketchflow, 和 Expression Web)授权

2 份 Expression Web 3 授权

4 份 Windows Web Server 2008 R2 处理器授权

4 份 SQL Server 2008 Web Edition 处理器授权

DotNetPanel 控制面板(服务器管理面板)

Windows Server 和SQL Server许可可以使用在开发和实际部署中,你可以将其应用在自有服务器上,或服务器提供商的服务器上。

参与者有俩个限制条件:1 必须是为他人开发设计。2 公司雇员要少于10个人。

三年后,所有计划包含的软件将不能够继续使用,并需要向微软交付100美元的项目金。同时,项目参与者可以以很优惠的价格购买计划中的产品。

 

WebsiteSpark地址:http://www.microsoft.com/WEB/websitespark/
 

红色标记为没有得到,绿色标记为还没证实,有图有真相,请看图。。。

 

 

做人要厚道,看到好文章就顶一下,谢谢哈。

 

 

posted @ 2010-03-16 10:31 非非.Net 阅读(3504) 评论(15) 编辑