zcmu-1056 网址收藏夹

【题述】

Description

每个浏览器都有一个内置的网址收藏夹,网址是以字符串的形式显示给我们看的,我们假设网址收藏夹的实现机理中有一个网址的映射过程,也即在软件领域非常实用的Hash技术,这个映射过程如下所述。
对于一个给定的字符串表示的网址,我们需要把所有奇数位置上的字符的ASCII码值相加得到一个和(设为sum_old),再把所有偶数位置上的字符的ASCII码值相加得到一个和(设为sum_even),再给定两个模数mod_old, mod_even,那么这个网址的映射值value = sum_old%mod_old + sum_even%mod_even 。
同时考虑到Hash引起冲突的可能性,我们还需要一个值来减少这种可能性,这里我们取网址的字符串表示中所有字符的ASCII码值之和SUM,这样“(value,sum)”就成了我们最终需要的映射结果。

Input

首先给定一个正整数T,表示有T组测试数据(T<=100)。
接下来T组数据,每组第一行给定三个正整数n, mod_old, mod_even,三个正整数范围是[1, 100],接下来给定n行字符串,每行是一个标准的网址表示形式,每个串长度设为length,6<=length<=100。所有字符的可能ASCII范围:[48, 122]。

Output

对于每个输入的网址都需要输出一行,即在该组下该网址的映射结果,格式为“(value,sum)”,其中value,sum的含义如上所述,引号无需输出,括号要输出,括号内没有任何空格。

Sample Input

1

3 10 20

www.chubao.cn

www.google.com.hk

www.chuangxin.com

Sample Output

(24,1284)

(12,1662)

(13,1733)

 

#include <stdio.h>
#include <string.h>
char a[105];
int main(){
    int t,i,n,old,even,j,r,s_old,s_even,value,sum;
    scanf("%d",&t);
    for(i=0;i<t;i++){
        scanf("%d%d%d",&n,&old,&even);
        for(j=0;j<n;j++){
            scanf("%s",a);
            int len=strlen(a);
            s_old=0;
            s_even=0;
            sum=0;
            for(r=0;r<len;r+=2){
                s_old+=a[r];
            }
            for(r=1;r<len;r+=2){
                s_even+=a[r];
            }
            for(r=0;r<len;r++){
                sum+=a[r];
            }
            value=s_old%old+s_even%even;
            printf("(%d,%d)\n",value,sum);
        }
    }
    
    
    return 0;
}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
绝对能看能用的C#代码 using System; using System.Collections.Generic; using System.Text; using System.Collections; namespace NetAddressCollector { public class CDataAccess : IDataAccess { #region IDataAccess 成员 private ArrayList _classList; public ArrayList ClassList { get { return _classList; } } private ArrayList _addressList; public ArrayList AddressList { get { return _addressList; } } private bool _isDirty = false; public bool IsDirty { get { return _isDirty; } } public void LoadData() { _classList = new ArrayList(); _addressList = new ArrayList(); string content = CFileOperation.ReadFile(CConst.DATAFILE); if (content.Length < 1) return; string[] ss1 = content.Split(new string[] { CConst.SPLITOR_CLASS_HTTP }, StringSplitOptions.RemoveEmptyEntries); string classString = ss1[0]; string httpString = ss1[1]; string[] ss2 = classString.Split(new string[] { CConst.SPLITOR_CLASS_ITEM }, StringSplitOptions.RemoveEmptyEntries); foreach (string s in ss2) _classList.Add(new CClass(s)); string[] ss3 = httpString.Split(new string[] { CConst.SPLITOR_HTTP_ITEM }, StringSplitOptions.RemoveEmptyEntries); foreach (string s in ss3) { string[] ss4 = s.Split(new string[] { CConst.SPLITOR_HTTP_DETAIL }, StringSplitOptions.RemoveEmptyEntries); foreach (CClass c in _classList) { if (c.Name == ss4[0]) { _addressList.Add(new CAddress(c, ss4[1], ss4[2], ss4[3])); break; } } } _isDirty = false; } public void SaveData() { StringBuilder sbClass = new StringBuilder(); foreach (CClass c in _classList) sbClass.Append(string.Format("{0}{1}", CConst.SPLITOR_CLASS_ITEM, c.Name)); StringBuilder sbContent = sbClass.Append(CConst.SPLITOR_CLASS_HTTP); StringBuilder sbHttp = new StringBuilder(); foreach (CAddress http in _addressList) sbHttp.Append(string.Format("{0}{1}", CConst.SPLITOR_HTTP_ITEM, http.ToString())); sbContent.Append(sbHttp); CFileOperation.WriteFile(CConst.DATAFILE, sbContent.ToString()); _isDirty = false; } public bool ExistClass(CClass httpClass) { foreach (CClass c in _classList) { if (c.Name == httpClass.Name) return true; } return false; } public bool ExistHttp(CAddress http) { foreach (CAddress addr in _addressList) { if (addr.Name == http.Name && addr.Name == http.Http) return true; } return false; } public void AddClass(string className) { CClass c = new CClass(className); AddClass(c); } public void AddClass(CClass httpClass) { _classList.Add(httpClass); _isDirty = true; } public void RemoveClass(CClass httpClass) { for (int i = _addressList.Count - 1; i >= 0; i--) { CAddress http = (CAddress)_addressList[i]; if (http.HttpClass.Name == httpClass.Name) RemoveHttp(http); } _classList.Remove(httpClass); _isDirty = true; } public void AddHttp(CClass httpClass, string name, string http, string remark) { CAddress addr = new CAddress(httpClass, name, http, remark); AddHttp(addr); } public void AddHttp(CAddress http) { _addressList.Add(http); _isDirty = true; } public void RemoveHttp(CAddress http) { _addressList.Remove(http); _isDirty = true; } #endregion } }
一、功能说明:<br> <br> 1、用于DVBBS7.0的网上网址收藏夹,将网址存入本收藏夹后无论你走到哪儿,只要能上网,只要能上这个论坛,就能使用你收藏的网址<br> 2、本版为IE导入版,除现了个人网址收藏(支持分组),网址、分组共享/查看功能外,还加入了实用的IE导入功能<br> 3、本插件最大的特点是将主程序与界面分离,不用去修改DVBBS的模版设定,以后ADRX提供的插件基本上均会使用此模式,而且每个文件前均会加上"X_"字符以资识别,分便安装与谢载<br> 4、下一版本将提供管理功能(结合迷城浪子的插件管理器,以提供更多的自由设定),分布日期未定,敬请期待<br> <br> 二、文件说明:<br> <br> X_URL.asp --> 主执行文件<br> X_URLSTYLE.asp --> 界面风格定义文件<br> X_ImpUrl_Char.asp --> 用于导入IE收藏的函数文件<br> X_ImUrl_upload.asp --> 用于导入IE收藏的上传界面<br> X_ImUrl_upfile.asp --> 用于导入IE收藏的上传主文件<br> X_FavUrl.mdb --> 数据库<br> <br> 三、安装说明:<br> <br> 本插件为绿色插件,但为了安全起见,使用前还是强烈要求您进行备份,否则后果自负,与本人无关<br> <br> 调试平台为DVBBS7.0 SMS与DVBBS7.0版 (发布日期2003年1月14日17:00),基本上DV7.0版本应该均可与之兼容 本插件为绿色插件,安装非常简单: 1、将所有".asp"文件COPY到你的论坛根目录 2、将FavUrl.mdb数据库COPY到你的数据库目录(默认为data目录,如要更改,请打开X_URL.asp文件,编辑第19行) 3、此数据库未做防下载处理,如需要,请自行解决^_^ 四、备注说明: 1、使用过程中如发现问题请到青年社区(http://youths.biz01.net/bbs)网络版提出,QQ及MSN拒答,谢谢^_^ 2、有好的想法请直接加我QQ或MSN(请说明来意)^_^ 3、本插件版权为青年社区(http://youths.biz01.net/bbs)ADRX所有,请尊重我的劳动,谢谢!! 4、你可自由使用及修改,但修改后请发送一份COPY给我,版权归ADRX及修改者所有,请加我QQ或MSN,谢谢^_^ 5、特别感谢asials兄弟为我提供了IE导入中数据抽取的方法,还有在开发过程中帮忙TEST的朋友,谢谢大家啦!!^_^
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值